设置$PATH目录时出现问题

4
由于某种奇怪的原因,我的$PATH变量出现了“找不到文件或目录”的错误。我尝试使用export编辑我的路径,从最初的路径更改到每个单独目录路径的各种排列组合。
当只有一个目录(例如export PATH=/bin)时,我会得到“/bin:是目录”错误。但一旦我添加多个目录(例如export PATH=/bin:/sbin),我就会收到“找不到文件或目录”的错误。
我很好奇造成这个问题的原因是什么!
3个回答

2

关于您的评论:

/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin:/usr/local/git/bin:/u‌sr/local/mysql/bin 如果你有一行这样的代码,将会生成“文件或目录不存在”的错误信息:

$PATH

也许是独立的,或者你有$PATH=...。也就是说,Shell 正在尝试执行一个名为:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin:/usr/local/git/bin:/u‌sr/local/mysql/bin的程序。在左侧去掉$符号即可。

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"

糟糕,第二个问题bin/sbin是我在撰写问题时的错误(我想!)这里是$PATH的内容/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin:/usr/local/git/bin:/usr/local/mysql/bin: No such file or directory。我也知道这是一个无空格操作,但问题可能来自于编辑.bash_profile时编辑了$PATH。 - Sean

0

export函数仅会更改当前终端会话的变量。

如果您想永久更改变量,请在~/.bash_profile中编写您的PATH

为使此修改生效,您必须关闭当前终端并重新打开它。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接