Saya sangat baru di Linux dan saya menempatkan perintah berikut di akhir file di .profile
bawah folder rumah saya:
export PATH="~/.composer/vendor/bin:$PATH"
Saya tahu masalah variabel lingkungan dan nilainya sedikit dari Windows, tetapi dalam hal ini saya ingin memahami apa yang dilakukan perintah ini, dan apa saja bagian yang terdiri dari:
Apa ungkapan "ekspor" ini di awal? Apakah ini mengekspor data agar tersedia untuk Bash?
Apa yang pertama
PATH
dan apa yang kedua$PATH
, dan mengapa kita perlu dua?
command-line
bash
environment-variables
JohnDoea
sumber
sumber
export
perintah atau tidak , karenaPATH
variabel sudah ditandai sebagai diekspor. (Cobalah dua-duanya jika Anda tidak percaya kepada saya!)Jawaban:
export
adalah sebuah perintah (lebih tepatnya itu adalah Bash builtin , artinya ini bukan hadiah yang bisa dieksekusiPATH
, itu adalah perintah yang Bash punya built-in dalam dirinya sendiri).export
menetapkan variabel lingkungan di sisi kiri penugasan ke nilai di sisi kanan penugasan; variabel lingkungan seperti itu terlihat oleh proses yang menetapkannya dan untuk semua subproses yang muncul dalam lingkungan yang sama, yaitu dalam hal ini ke instance Bash yang sumber~/.profile
dan semua subproses yang muncul dalam lingkungan yang sama (yang mungkin mencakup misalnya juga kerang lain , yang pada gilirannya akan dapat mengaksesnya).Yang pertama
PATH
seperti dijelaskan di atas adalah variabel lingkungan yang akan ditetapkan menggunakanexport
.Karena
PATH
biasanya berisi sesuatu ketika~/.profile
bersumber (secara default mengandung/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
), hanya pengaturanPATH
untuk~/.composer/vendor/bin
membuatPATH
mengandung saja~/.composer/vendor/bin
.Jadi karena referensi ke variabel dalam perintah diganti dengan (atau "diperluas" ke) nilai variabel oleh Bash pada saat evaluasi perintah ,
:$PATH
diletakkan di akhir nilai yang akan ditugaskanPATH
sehinggaPATH
berakhir mengandung~/.composer/vendor/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
( yaitu apa yangPATH
sudah berisi plus~/.composer/vendor/bin:
di awal).sumber
https://help.ubuntu.com/community/EnvironmentVariables mungkin akan membantu Anda. Juga
man bash
mungkin sangat membantu dengan memahami cara kerjanya (setidaknya di Bash)Pokoknya - seperti untuk
PATH=
Anda pada dasarnya mengaturPATH
variabel, menambahkan beberapa jalur baru untuk mencari, menambahkan pada akhir sudah / sebelumnya mengatur jalur, dengan$PATH
(yang pada dasarnya merupakan referensi kePATH
variabel).Jadi, katakan Anda
PATH
sejauh ini diatur untuk sesuatu seperti:dan kemudian Anda atur
PATH
setelah Anda akan seperti:Saya harap itu masuk akal.
Dan di atas itu Anda mengekspor variabel baru sehingga dikenal di lingkungan Anda termasuk juga proses anak / subkulit.
Perlu diketahui juga bahwa urutan direktori yang diatur
PATH
dapat menjadi penting. Dan sesuatu sepertiPATH="$PATH:a:b:c"
akan memberi Anda hasilnya:yang akan memengaruhi urutan direktori / jalur saat mencari perintah (jika Anda memiliki perintah di lebih dari satu direktori, yang pertama ditemukan akan digunakan - yang terkadang memberi Anda beberapa hasil yang tidak terduga).
sumber
Inilah perintahnya sehingga setiap orang dapat mengikuti saat mereka melewati poin-poin.
export PATH="~/.composer/vendor/bin:$PATH"
export
/bin/export
perintah shell built-in (artinya tidak ada , ini shell) pada dasarnya membuat variabel lingkungan tersedia untuk program lain yang dipanggil daribash
(lihat pertanyaan terkait di Extra Reading) dan subkulit.PATH
variabel nanti.$PATH
adalahPATH
penugasan default (atau paling tidak seperti apa variabel hingga perintah ini muncul di Anda.bashrc
atau.profile
), dan perluas.~/.composer/vendor/bin
akan diperluas ke/home/username/.composer/vendor/bin
, di mana.composer
folder tersembunyi karena titik terkemuka.~/.composer/vendor/bin:$PATH
sekarang telah berubah menjadi daftar folder yang panjang, dipisahkan oleh:
. Semuanya terlampir menjadi tanda kutip ganda sehingga kami menyertakan folder dengan spasi di jalurnya.PATH
perintah variabel dan eksternal yang diizinkan untuk menggunakannyaContoh sederhana
Shell interaktif saya sebenarnya
mksh
, yang kebetulan juga memilikiexport
builtin. Dengan menggunakanexport
to setVAR
, variabel saya dapat diteruskan ke dan digunakan oleh rantai perintah / subproses berikutnya, tempat saya mengekspor variabel yang samaBacaan Ekstra
sumber
~
in~/.composer/vendor/bin
tidak akan diperluas! Tilde hanya diperluas di beberapa tempat khusus, seperti langsung setelah=
tanda.PATH="~/.foo:$PATH"
hasil dalam~/.foo:/other/path/dirs...
. Tetapi~
akan diperluasPATH=~"/.foo:$PATH"
, yang menghasilkan/home/user/.foo:/other/path/dirs...
.Saya telah membaca di sini dan di tempat-tempat lain di web, berbicara dengan seorang teman tentang ini dan memutuskan bahwa sebagai mahasiswa baru (mungkin lebih dari mahasiswa baru Ubuntu maka beberapa di sini mungkin berpikir), saya harus memetakan perintah ini - saya harus membuat peta dan jadi pelajari tentang keberadaan dan keberadaannya:
Data awal
Jika untuk saat ini Anda tidak memahami sesuatu dalam bab ini - jangan khawatir, itu akan menjadi lebih jelas karena Anda akan terus membaca, tetapi untuk memahami hal ini Anda perlu membaca tentang variabel Lingkungan (EV), nilai-nilainya, dan tujuannya . Sekarang saya akan mencoba menjelaskan perintah dengan kata-kata sederhana dan dalam metode pemetaan, untuk pendatang baru seperti saya, dan hanya untuk pendatang baru. Mencoba melakukan yang terbaik di sini ...
Pemetaan
Nilai asli dari EV "PATH" seperti yang disertakan dengan Ubuntu 15.10, adalah:
Dalam catatan perintah itu sendiri kita memiliki dua frase PATH. Yang terakhir adalah $ PATH - $ mengatakan "cetak nilai asli atau nilai EV di sebelah Anda"; EV di sebelahnya adalah PATH EV.
Kami mengekspor variabel path itu sendiri (membuatnya tersedia untuk sub proses juga, proses IE yang berjalan di CLI yang sebenarnya bukan Bash shell, tetapi dijalankan di dalamnya (seperti Drush , yang merupakan CLI Drupal ).
Selain ekspor, kami juga memperluasnya: Frasa PATH pertama (PATH =) menggunakan kami untuk menambahkan nilai tambahan (~ / .composer / vendor / bin :) ke nilai asli (diwakili oleh $ PATH).
Tanda titik dua (:) di akhir nilai baru yang saya sebutkan di paragraf di atas, digunakan untuk membedakan nilai baru dari yang asli.
"" Adalah area di mana nilai berada.
~ Adalah folder rumah.
Saya berharap setelah pemetaan ini saya lakukan, perintah akan lebih jelas untuk mahasiswa baru seperti saya.
sumber
The
export
perintah membuat variabel yang tersedia di subkulit. Artinya, tanpa itu, variabelPATH
tidak akan terlihat dalam subkulit.PATH
disebutkan dua kali:=
tanda.=
tanda. Ini membuat nilai lama menjadi bagian dari nilai baru.sumber
PATH
tidak akan terlihat dalam subkulit." Ini salah;PATH
adalah variabel lingkungan (yang tidak persis sama dengan variabel shell ) sehingga diekspor secara otomatis, danexport
perintahnya tidak perlu.setenv
perintahnya.PATH
berasal dari lingkungan, maka secara otomatis diekspor, jadi Anda tidak perlu menjalankanexport
agar perubahan disebarkan ke proses anak (bertentangan dengan apa yang dikatakan halaman yang ditautkan).PATH=foo
danexport PATH=foo
memiliki perilaku yang identik.itu
export
adalah perintah build dari bash, berarti variabel ekspor menjadi variabel envirement. (Anda bisa mengetikhelp export
untuk bersandar lebih banyak(karakter yang mengikuti perintah adalah parameter, dibagi dengan spasi, jadi dalam hal ini, hanya ada satu parameter)
itu
PATH
adalah nama variabel, biasanya, varibale yang telah ditentukan oleh bash, dinamai dalam Huruf besar.yang
=
berarti nilai assign ke variabel ini.semua string adalah nilai dari varibale
itu
$PATH
adalah semacam fungsi bash, bernamavariable expantion
, bash akan menggantikan nilai yang adaPATH
di string parameter, SEBELUM mengirim string keexport
perintahyang
:
di char spcial dalam variabel PATH dan understooded oleh semua aplikasi yang ingin menggunakan variabel ini. itu berarti seperator. sehingga mereka akan memiliki banyak direktori dalam variabel PATH.sumber