web-dev-qa-db-ja.com

zsh config-エクスポートするかどうか

~/.zshrcに変数を設定する場合、exportを使用することもできます

export PATH=/some/path

か否か

PATH=/some/path

これらはどのように異なり、どちらを使用すればよいですか?

26
jordelver

プログラムをzshから実行してvarを表示する場合は、それをエクスポートします。
パスについては、おそらくエクスポートする必要があります。
の代わりに export PATH=/some/pathおそらく必要ですexport PATH="$PATH:/some/path"、システムプリセットパスを完全に消去する場合を除きます。

22
demure

Demureはすでにあなたの特定の質問に答えました。ただし、これはzshの質問であり、PATHについてです。つまり、もう1つポイントがあります。標準変数_$PATH_のほかに、配列である_$path_もあります。ここに違いがあります(コロンかどうか...):

_$ print $PATH
/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin
$print $path
/bin /usr/bin /usr/local/bin /usr/X11R6/bin
_

両方のバリアントは自動的に同期されます。では、配列を使用する利点は何ですか?

  • 後者の場合、_typeset -U path_を使用して宣言し、「重複する各値の最初の出現のみを保持する」(_man zshbuiltins_から)。つまり、_~/.zshrc_を連続的にソースし(変更したか何かのため)、同じ値で何度も混乱しないようにしても、パスはクリーンに保たれます。
  • path+=(/new/path)を使用して、PATHに新しいディレクトリを追加できます。要素を削除するには、いくつかのトリックを使用する必要があります。 https://stackoverflow.com/q/3435355/2037712 または http://www.zsh.org/mla/users//2005/msg01132.html
  • for i ($path) { print $i # or do something else }を使用して、PATHの要素を簡単にループできます。

最後に、これは私の設定からの抜粋です:

_typeset -U path
path=(/new/path1
      /new/path2
      $path)
export PATH
_
23
mpy