バリアントを使用しているかどうかはわかりません。export
次のトランスクリプトのように、ほぼ確実にそこにスペースがあり、そうすべきではありません。
pax> PATH= /bin
bash: /bin: is a directory
pax> PATH= /bin/sbin
bash: /bin/sbin: No such file or directory
1つ目は、そのディレクトリを実行しようとしているときにパスを一時的に空の文字列に設定しているために発生します。これは、次のようなことができるためです。
pax> xyzzy=1
pax> echo $xyzzy
1
pax> xyzzy=2 bash -c 'echo $xyzzy'
2
pax> echo $xyzzy
1
つまり、1つのコマンドの環境変数を変更し、コマンドが終了すると自動的に元に戻す方法です。
2番目のケースは、単にディレクトリがないためです。/bin/sbin
したがって、ディレクトリを実行しようとしているという事実について文句を言う前に、それを検出します。
に変数を設定するbash
ことはスペースなしです(ディレクトリ名にスペースがある場合を除き、その場合は引用符で囲む必要があります)。さらに、それらはコロンで区切る必要があります。したがって、次のようなものを探しています。
PATH=/bin
PATH=/bin:/sbin
PATH="/bin:/sbin:/directory with spaces in it:$HOME/bin"