zsh config-エクスポートするかしないか


23

私の変数を設定するとき、~/.zshrc私はどちらかを使用することができますexport

export PATH=/some/path

か否か

PATH=/some/path

これらはどのように異なり、どちらを使用する必要がありますか?


非対話型シェル(たとえば、作成したシェルスクリプト)でも使用される環境変数は、に入る必要があり.zshenvます。
フランシスコ

される~/.zshenvだけでなく、ログインシェルによってソース?PATHそこで定義する必要がありますか?
ジョーデルバー

1
PATHは、おそらく内部~/.zshenvで定義する必要がある変数の最良の例です。このファイルは zshセッションから取得されます(何らかのオプションを使用して無効にしない限り)。man zshどのファイルがどの順序で取得されるかのレビューを参照してください。
フランシスコ

わかりました、ありがとう@Francisco私はmanページを読みます。
ジョーデルバー

回答:


21

プログラムをzshから実行して変数を表示するには、エクスポートします。
パスについては、おそらくエクスポートする必要があります。システムプリセットパスを完全にクリアするつもりでない限り、おそらく必要で
はありexport PATH=/some/pathませんexport PATH="$PATH:/some/path"


それは素晴らしい、ありがとう。次に、一般的なルールとしてエクスポートを使用します。
ジョーデルバー

21

おとなしさはすでにあなたの特定の質問に答えました。しかし、これはzsh質問PATHです。ここに別のポイント$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を参照してください。
  • PATHの要素を介して簡単にループできます for i ($path) { print $i # or do something else }

最後に、ここに私の設定からの抜粋があります:

typeset -U path
path=(/new/path1
      /new/path2
      $path)
export PATH

ありがとう、それは実際にフォローアップの質問でした。pathではなくを使用してパスを管理しPATHます。
ジョーデルバー

1
私はすでにOTだと恐れていたので聞いてうれしいです。ところで 私が忘れていた別の利点:で簡単に要素をループできますfor i ($path) { print $i # or do something else }
mpy
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.