ZSHは$ PATHを読みません。

ZSHは$ PATHを読みません。

私は最近私のプライベートスクリプトを私の変数$HOMEに含めることにしました。$PATHただし、これを実行しようとすると、ZSHは「コマンドが見つかりません」と応答します。次の行は私が追加したものです。.xprofile

PATH="$PATH:~/.local/share/";export PATH

いくつかのスクリプトがありますが、~/.local/share/ZSHでは実行できませんが、bashではうまく動作します。上記のライブを私のライブに追加しようとしましたが、うまくいきませ.zshrcんでした。

答え1

~変数ではなく、変数のように動作しません。

~シェルは通常引用しても拡張されません。シェルの特殊なチルダ文字の処理に依存せずに、ホームディレクトリへの正しいパスを取得するために、すべてのシェルで$HOME置換を使用できます(対話式シェルで主に使用されるショートカット)。~

$HOME するこれは、変数が機能すると予想されるとおりに機能します。つまり、二重引用符で囲むと、ホームディレクトリパスに展開されます。

また、その可能性が低いことも参考にしてくださいPATHいいえすでに環境変数です。したがって、エクスポートする必要はありません。

zshシェルで~/.local/shareコマンド検索パスの末尾に追加するには、次のこともできます。

path+=~/.local/share

または

path+=$HOME/.local/share

配列変数pathスカラー変数に追加されますPATH。つまり、上記のように配列を更新すると、追加された要素pathが値の末尾に追加されます$PATH

答え2

ZSH起動スクリプト~/.zshrcはとです~/.zshenv。私は通常、グローバル環境変数PATH~/.zshenv

起動スクリプトの他のディレクティブは、あなたのディレクティブを上書きまたは置き換えることができますPATH。 zshの起動中に何が起こるかを確認するには、次のようにします。

zsh -x 2>&1 </dev/null |grep PATH 

スクリプトを起動しても、すでに実行されているシェルには影響しません。これを更新するには:

  • たとえば、スクリプトを取得します。. ~/.zshenv
  • exec zsh -lzsh( ) 再実行
  • ログアウトしてもう一度ログインしてください。

関連情報