4

出于某种奇怪的原因,我的$PATH变量出现“没有这样的文件或目录”错误。我尝试使用 编辑我的路径export,将其从原来的路径更改为从单个目录路径到原始路径的每个排列。

当有一个目录(例如,export PATH=/bin)时,我得到“/bin: Is a Directory”。但是一旦我添加了多个目录(例如,export PATH=/bin:/sbin),我就会得到“没有这样的文件或目录”。

我很想知道这个问题的原因是什么!

4

3 回答 3

2

关于; 你的评论:

/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=...。也就是说,shell 正在尝试执行一个名为:

/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

第一个是因为您在尝试运行该目录时临时将路径设置为空字符串。那是因为您可以执行以下操作:

pax> xyzzy=1

pax> echo $xyzzy
1

pax> xyzzy=2 bash -c 'echo $xyzzy'
2

pax> echo $xyzzy
1

换句话说,它是一种为单个命令更改环境变量并在命令完成时自动恢复的方法。

第二种情况只是因为没有目录/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 回答