zsh config - untuk mengekspor atau tidak untuk mengekspor?


23

Saat mengatur variabel di saya ~/.zshrcsaya bisa menggunakanexport

export PATH=/some/path

atau tidak

PATH=/some/path

Bagaimana perbedaannya dan mana yang harus saya gunakan?


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 ...):

$ print $PATH
/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin
$print $path
/bin /usr/bin /usr/local/bin /usr/X11R6/bin

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.
  • Anda dapat menggunakan 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.html
  • Anda dapat dengan mudah mengulang elemen di PATH melalui for i ($path) { print $i # or do something else }

Akhirnya, inilah kutipan dari config saya:

typeset -U path
path=(/new/path1
      /new/path2
      $path)
export PATH

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 }.
— mpy
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.