$PATH vs. $jalan
Saya tidak dapat mengingat mengapa, tetapi dahulu kala, saya menemukan bahwa untuk beberapa alasan, saya perlu menetapkan kedua variabel ini. Itu tidak menyebabkan masalah di bash, tapi sekarang di zsh, saat saya pasang
export PATH=~/bin:/opt/local/bin:/opt/local/sbin:$PATH export path=$PATH
(Hal yang sama yang saya gunakan di .bashrc) dalam inisialisasi saya, saya mengerti
/Users/…/.zshenv:export:7: path: inconsistent type for assignment
Apa yang mereka maksud dengan "type", dan untuk apa $ path digunakan?
Jawaban
Kesalahan menyebutkan 'type' mengacu pada tipe data variabel, seperti string atau array.
$PATHadalah string, $pathadalah array. Anda tidak dapat menetapkan string, baik dengan variabel atau literal, ke variabel yang diketik untuk memuat larik, karena jenisnya tidak cocok.
Adapun perbedaan antara kedua variabel ini: mereka dimaksudkan untuk mewakili daftar folder yang sama, tetapi dalam format yang berbeda. $PATHmengandung /path/to/one:/path/to/twoakan berarti bahwa $pathelemen pertama adalah /path/to/onedan yang kedua adalah /path/to/two.
Anda tidak perlu mengelola dua variabel (dan menetapkan satu variabel ke variabel lain tidak akan berfungsi karena jenisnya tidak cocok) - shell harus menanganinya untuk Anda. Cukup tambahkan ke $PATHstring dan jalur yang Anda tambahkan harus ada sebagai elemen $path.
Ini hanya berlaku di zsh, diwarisi dari *csh. Anda dapat melihat 'pengikatan' antara dua variabel dengan typeset -p PATH.
$path menjadi sebuah array sangat nyaman:
menambahkan dan mengubah jalur dapat dilakukan dengan operasi array seperti menambahkan daripada manipulasi string (memerlukan pemisahan dan penggabungan dalam kasus pengeditan di suatu tempat di tengah).
perulangan hanya
for i ($path) { … }tanpa perlu berurusan dengan pengaturan karakter split yang tepat.
PATH adalah nilai skalar- string jalur pencarian kontinu yang dipisahkan oleh titik dua dan jalur adalah larik jalur pencarian. zshakan menyinkronkan jalur dan PATH. Anda tidak perlu melakukannya.