zshで$ pathと$ PATH(小文字と大文字)の違いは何ですか?

zshで$ pathと$ PATH(小文字と大文字)の違いは何ですか?

存在するFreeBSD12. 使用zshシェルで$path(小文字)と(大文字)を見る$PATHと、これらの違いが見つかりました。

echo $path

/sbin /bin /usr/sbin /usr/bin /usr/local/sbin /usr/local/bin /usr/home/freebsd/bin

echo $PATH

/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin:/usr/home/freebsd/bin

ある出力は空白文字で区切られ、もう一方の出力はコロン文字で区切られます。

➥なぜこんなに違いがあるのでしょうか?

これは2つの異なる独立変数ですか?それとも、小文字/大文字が私が知らないトリックや意味を引き起こしますか?

これがzsh特徴ですか?それともFreeBSDの機能ですか?

ベストアンサー1

これは特徴ですzsh次から継承csh/tcsh

これ$path 大量に変数はバンドル到着$PATH スカラー(文字列)変数。一方の修正は他の修正にも反映されます。

zsh(with)とは異なり、(t)csh他の変数を次のよう$PATHに組み合わせることができます。typeset -T。必須ではありませんが、慣例に従ってコロンで区切られたスカラーには大文字の名前を使用し、配列には同じ小文字の名前を使用します。コロンはデフォルトの区切り文字ですが、他の区切り文字を使用することもできます(たとえば、複数行の文字列を配列にバインドする改行またはcsv行を配列にバインドするコンマ)

最新バージョンでは、zshまたは2つの変数間typeset -p PATHtypeset -p pathリンクが表示されます。

% typeset -p path
typeset -aT PATH path=( /home/chazelas/bin /usr/local/bin /usr/bin /bin )

これは、コンポーネントを追加、削除、または繰り返しやすくするために便利です。

1つを作成してtypeset -U path要素を作成します。ユニークまた、$PATH変数をきれいに保つのに役立ちます(tcshを使用して同様の結果を得ることができますset -f)。

完全性のために配列として処理できる 2 つの異なるシェルがありますがfish、その場合には別の小文字変数を介しません。yash$PATH

存在するfish名前がコロンで終わる変数は、PATH暗黙的に分割/接続されたリストとして扱われます。だから、set PATH /foo /barとはset PATH /foo:/barそこで同じです。

からyash配列を環境にエクスポートすると、コロンで連結された要素を含む環境変数の値が生成されます。だからPATH=(/foo /bar)そこでやればいいのです。これは、$PATH起動時に環境からインポートしたときにyash自動的に配列として作成されません。

おすすめ記事