$PATH vs. $yol

Sep 06 2020

Nedenini hatırlayamıyorum, ancak uzun zaman önce, bir nedenden dolayı bu değişkenlerin her ikisini de ayarlamam gerektiğini buldum. Bash'de hiçbir soruna neden olmadı, ama şimdi zsh'de,

export PATH=~/bin:/opt/local/bin:/opt/local/sbin:$PATH export path=$PATH

(.bashrc'de kullandığım şey) başlatmamda

/Users/…/.zshenv:export:7: path: inconsistent type for assignment

"Tür" ile ne demek istiyorlar ve $ path ne için kullanılıyor?

Yanıtlar

8 grg Sep 06 2020 at 04:09

'Tür'den bahseden hata, dize veya dizi gibi değişkenin veri türünü ifade eder.

$PATHbir dizedir, $pathbir dizidir. Türler eşleşmediğinden, bir dizi içerecek şekilde yazılmış bir değişkene değişken veya değişmez bir dize atayamazsınız.

İki değişken arasındaki farkın ne olduğuna gelince: aynı klasör listesini, ancak farklı formatlarda temsil etmeleri amaçlanmıştır. $PATHiçeren /path/to/one:/path/to/two, $pathbirinci öğenin olduğu /path/to/oneve ikinci öğenin olduğu anlamına gelir /path/to/two.

İki değişkeni yönetmenize gerek yoktur (ve türler eşleşmediği için birini diğerine atamak işe yaramaz) - kabuk bunu sizin için halletmelidir. Sadece $PATHdizeye ekleyin ve eklediğiniz yolun bir öğesi olarak varolması gerekir $path.

Bu yalnızca zshmiras alınan için geçerlidir *csh. İki değişken arasındaki 'bağlamayı' ile görebilirsiniz typeset -p PATH.

$path dizi olmak gerçekten kullanışlıdır:

  • yolun eklenmesi ve değiştirilmesi, dize manipülasyonundan ziyade ekleme gibi dizi işlemleriyle yapılabilir (ortada bir yerde düzenleme yapılması durumunda bölme ve birleştirme gerektirir).

  • döngü for i ($path) { … }, doğru bölünmüş karakterin ayarıyla uğraşmaya gerek kalmadan gerçekleşir.

3 fd0 Sep 06 2020 at 04:04

PATH bir skaler değerdir - iki nokta üst üste ile ayrılmış sürekli bir arama yolları dizisidir ve yol bir arama yolları dizisidir. zshhem yolu hem de PATH'i senkronize edecek. Bunu yapmanıza gerek yok.