Apakah ada cara mudah di zsh untuk menambahkan direktori ke PATH saya hanya jika belum ada? (atau, lebih umum, variabel lingkungan apa pun). Saya sudah mencoba:
PATH+=/my/directory
... tetapi jika itu dieksekusi dua kali, itu akan ditambahkan dua kali.
Jawaban:
In
zsh
$PATH
diikat (lihattypeset -T
) ke$path
array. Anda bisa memaksa array itu untuk memiliki nilai unik dengan:Dan kemudian, tambahkan path dengan:
Tanpa harus khawatir jika sudah ada di sana.
Untuk menambahkannya di depan, lakukan:
atau:
jika
~/foo
sudah ada$path
yang akan memindahkannya ke depan.sumber
typeset -Ug path
? Ketika saya gunakantypeset -U path
di~/.zshrc
file saya , saya selalu mendapatkan kembali kesalahan tentang tidak ada yang ada di jalan saat zshrc berjalan-g
adalah untuk menghindari membatasi ruang lingkup, tetapi dalam~/.zshrc
, ruang lingkup sudah global. Juga, saya belum pernah melihatzsh
keluhan tentang yang kosong$PATH
(kecuali untuk perintah tidak ditemukan kesalahan tentunya).Tambahkan
export -U PATH=~/foo${PATH:+:$PATH}
ke salah satu file startup Anda. Hanya-U
menyimpan kemunculan pertama nilai dalam array atau:
variabel terbatas tertentu seperti PATH.sumber
Anda harus melakukan sesuatu seperti:
Ini hanya berfungsi jika
newpath
dibatasi oleh dua ':', perlu mempertimbangkan kasus ketika itu di awal atau akhir sama.Urgh.
sumber
echo "$PATH"
: selalu menempatkan tanda kutip ganda di sekitar substitusi variabel ).case ":$PATH:" in *:/new/directory:*) :;; *) PATH=$PATH:/new/directory;; esac