Variabel lingkungan yang juga digunakan oleh kerang non-interaktif (katakanlah, skrip shell yang Anda tulis) harus dimasukkan .zshenv.
Francisco
Apakah ~/.zshenvbersumber dari shell login juga? Harus PATHdidefinisikan di sana?
jordelver
1
PATHmungkin adalah contoh terbaik dari variabel yang harus didefinisikan di dalam ~/.zshenv, file ini bersumber dari sesi zsh apa pun (kecuali jika Anda menggunakan beberapa opsi untuk mematikannya). Lihat man zshulasan file mana yang diambil dan urutannya.
Francisco
Ok, terima kasih @Francisco saya akan membaca halaman manual.
jordelver
Jawaban:
21
Jika Anda ingin program dijalankan dari zsh untuk melihat var, eksporlah.
Untuk jalur, Anda mungkin ingin mengekspor.
Alih-alih export PATH=/some/pathAnda mungkin ingin export PATH="$PATH:/some/path", kecuali jika Anda ingin menghapus jalur preset sistem sepenuhnya.
Bagus, terima kasih. Saya akan menggunakan ekspor sebagai aturan umum sekarang.
jordelver
21
Demure sudah menjawab pertanyaan spesifik Anda. Namun ini adalah zshpertanyaan dan pertanyaan PATH. Jadi di sini adalah hal lain: Di samping variabel standar $PATH, ada juga $path, yang merupakan array. Di sini Anda melihat perbedaannya (titik dua atau tidak ...):
Kedua varian secara otomatis disinkronkan. Jadi, apa manfaat menggunakan array?
Yang terakhir Anda dapat mendeklarasikan melalui typeset -U pathuntuk "tetap hanya kejadian pertama dari setiap nilai duplikat" (dari man zshbuiltins). Itu berarti ini menjaga jalan Anda tetap bersih, bahkan jika Anda berturut-turut sumber ~/.zshrc(karena Anda mengubahnya atau apa pun) dan jangan mengacaukannya dengan nilai yang sama lagi dan lagi.
Terima kasih, itu sebenarnya pertanyaan lanjutan. Saya akan melihat mengelola jalur saya menggunakan pathdaripada PATH.
jordelver
1
Senang mendengar karena saya sudah takut bahwa saya PL. Btw. Keuntungan lain yang saya lupa: Anda dapat dengan mudah mengulang elemen for i ($path) { print $i # or do something else }.
.zshenv
.~/.zshenv
bersumber dari shell login juga? HarusPATH
didefinisikan di sana?PATH
mungkin adalah contoh terbaik dari variabel yang harus didefinisikan di dalam~/.zshenv
, file ini bersumber dari sesi zsh apa pun (kecuali jika Anda menggunakan beberapa opsi untuk mematikannya). Lihatman zsh
ulasan file mana yang diambil dan urutannya.Jawaban:
Jika Anda ingin program dijalankan dari zsh untuk melihat var, eksporlah.
Untuk jalur, Anda mungkin ingin mengekspor.
Alih-alih
export PATH=/some/path
Anda mungkin inginexport PATH="$PATH:/some/path"
, kecuali jika Anda ingin menghapus jalur preset sistem sepenuhnya.sumber
Demure sudah menjawab pertanyaan spesifik Anda. Namun ini adalah
zsh
pertanyaan dan pertanyaanPATH
. Jadi di sini adalah hal lain: Di samping variabel standar$PATH
, ada juga$path
, yang merupakan array. Di sini Anda melihat perbedaannya (titik dua atau tidak ...):Kedua varian secara otomatis disinkronkan. Jadi, apa manfaat menggunakan array?
typeset -U path
untuk "tetap hanya kejadian pertama dari setiap nilai duplikat" (dariman zshbuiltins
). Itu berarti ini menjaga jalan Anda tetap bersih, bahkan jika Anda berturut-turut sumber~/.zshrc
(karena Anda mengubahnya atau apa pun) dan jangan mengacaukannya dengan nilai yang sama lagi dan lagi.path+=(/new/path)
untuk menambahkan direktori baru ke PATH Anda. Untuk menghapus elemen Anda harus menggunakan beberapa trik, lihat misalnya /programming//q/3435355/2037712 atau http://www.zsh.org/mla/users//2005/msg01132.htmlfor i ($path) { print $i # or do something else }
Akhirnya, inilah kutipan dari config saya:
sumber
path
daripadaPATH
.for i ($path) { print $i # or do something else }
.