4

奇妙な理由で、変数に対して「そのようなファイルまたはディレクトリはありません」というエラーが表示され$PATHます。を使用してパスを編集しようとしましexportたが、元のパスから、単一のディレクトリ パスから元のパスへのすべての順列に変更しました。

ディレクトリが 1 つの場合 (例: export PATH=/bin)、「/bin: ディレクトリです」と表示されます。しかし、複数のディレクトリ (例: export PATH=/bin:/sbin) を追加すると、「そのようなファイルまたはディレクトリはありません」というメッセージが表示されます。

この問題の原因が何か知りたいです!

4

3 に答える 3

2

RE; あなたのコメント:

/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin:/usr/local/git/bin:/u‌sr/local/mysql/bin: No such file or directory次のような行がある場合に生成されます。

$PATH

単独で、または持っているかもしれません$PATH=...。つまり、シェルは次の名前のプログラムを実行しようとしています。

/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin:/usr/local/git/bin:/u‌sr/local/mysql/bin

左側の $ を失います。

于 2012-10-21T15:31:45.667 に答える
1

バリアントを使用しているかどうかはわかりません。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"
于 2012-10-20T12:27:01.510 に答える
0

このexport関数は、現在のターミナルセッションの変数のみを変更します。

恒久的に変更したい場合は、PATH内部に書き込んでください。~/.bash_profile

この変更を機能させるには、現在のターミナルを閉じてから再度開く必要があります。

于 2012-10-20T12:28:33.550 に答える