Saya menggunakan zsh
shell saya, dan saya mencoba mengkonfigurasi lingkungan saya.
Saya biasanya mendefinisikan $JAVA_HOME
variabel saya dengan membuat file:
/etc/profile.d/java.sh
dengan konten berikut
export JAVA_HOME=/path/to/jdk
export PATH=$JAVA_HOME/bin:$PATH
kemudian saya logout dan kembali, dan semuanya bekerja, tetapi karena suatu alasan PATH
variabel tidak disetel. Ia mengenali JAVA_HOME
, tetapi bukan yang baru PATH
, lihat cuplikan terminal ini:
~ echo $JAVA_HOME
/usr/lib/jvm/jdk1.8.0_05
~ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
dan saya mengkonfirmasi dengan mencoba menjalankan perintah dari jvm
~ java -version
zsh: command not found: java
yang PATH
tidak termasuk $JAVA_HOME
sebagaimana mestinya. apakah ada hal lain yang harus saya periksa?
Saya telah memeriksa bahwa jika saya menjalankan:
source /etc/profile.d/java.sh
semuanya berjalan dengan benar dan variabel saya diatur sebagaimana mestinya, tetapi bukankah skrip harus /etc/profile.d
dijalankan secara otomatis?
environment-variables
zsh
Rodrigo Sasaki
sumber
sumber
~/.profile
dan menempatkan variabel di sana? Mungkin yangPATH
sedang ditimpa di tempat lain di/etc/profile.d/
.Jawaban:
Dari sudut pandang saya, cara terbaik adalah menambahkan baris berikut pada
~/.zshrc
file (jika Anda belum memilikinya, maka buatlah):Kemudian restart Anda
zsh
, atau jalankan sajasource ~/.zshrc
dan kemudian PATH Anda harus persis seperti yang Anda inginkan.Atau, jika Anda ingin membuat perubahan menjadi seluruh sistem, kemudian tambahkan kode sebelumnya ke akhir
/etc/zsh/zshenv
file.Tetapi bagaimanapun juga tidak digunakan
/etc/profile.d
untuk menjalankan skrip secara otomatiszsh
. Direktori ini hanya berguna untukbash
shell, tidakzsh
seperti pada kasus Anda. Untuk memahami hal ini, buka/etc/profile
file, yang merupakan file inisialisasi bash dan sama sekali bukan file inisialisasi zsh , dan Anda akan melihat suatu tempat di akhir file:Jadi, skrip Anda dari
/etc/profile.d
direktori akan berjalan secara otomatiszsh
hanya jika Anda menambahkan kode sebelumnya dalam file inisialisasi zsh, seperti/etc/zsh/zprofile
misalnya, atau sumber/etc/profile
dalam/etc/zsh/zprofile
file.sumber
~/.zprofile
lebih baik dari itu~/.zshrc
.Saya menemukan bahwa menempatkan semuanya dalam satu
.zshenv
file dengan cepat menjadi sulit untuk dikelola. Saya sarankan menginstal oh-my-sh dan kemudian menempatkan berbagai penyesuaian (env vars, functions) ke.oh-my-sh/custom/
direktori sebagai.zsh
file terpisah .Saya juga menemukan bahwa pendekatan ini bekerja dengan sempurna ketika ssh'ing ke mesin ketika memodifikasi variabel env seperti
PATH
. Juga berfungsi sangat baik bersama dengan vcsh untuk menjaga agar kustomisasi tetap didukung dan sinkron.sumber
~/.ssh/config
Sejak
JAVA_HOME
diatur, Anda telah mengkonfirmasi bahwa skrip tersebut bersumber secara otomatis, bukan?Satu-satunya penjelasan logis adalah yang
PATH
diatur nanti entah bagaimana. Seharusnya diatur oleh PAM yang berbunyi/etc/environment
, dan sejauh yang saya tahu itu terjadi sebelum/etc/profile.d/*.sh
file bersumber. Mungkin zsh bekerja berbeda dibandingkan dengan bash dalam hal itu.sumber
Baru saja mengalami masalah ini secara lokal setelah menjalankan pembaruan. Sepertinya masalah root adalah Drush tidak tahu di mana menemukan salinan php yang sah yang menyertakan pdo. Untungnya itu mendukung menyimpan path ini dalam variabel lingkungan, jadi saya melakukan ini pada commandline:
Itu memperbaiki masalah jadi saya mengedit .zshrc dan menambahkannya ke file, masalah terpecahkan.
sumber
.zshrc
digunakan, sama dengan jawaban teratas ?