Linux $PATH 变量出现`No such file or directory`

2018-11-20 16:00:40 +08:00
 dwzhao

刚刚在 /etc/profile 中添加了 PATH 信息,然后顺手检查一下效果,发现一个奇怪的信息: $ $PATH -bash: /usr/local/java-se-7u75-ri/java-se-7u75-ri/bin:/usr/local/mongodb/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games: No such file or directory

然后直接输出 $ echo $PATH /usr/local/java-se-7u75-ri/java-se-7u75-ri/bin:/usr/local/mongodb/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games

看起来目录都是有的,为什么会有这样的提醒:No such file or directory 表示很疑惑????

3679 次点击
所在节点    Python
3 条回复
jasonyang9
2018-11-20 16:09:27 +08:00
你在 Shell 中输 `$PATH`,它替换成 `PATH` 变量的内容了,然后再去尝试解释运行它,就是`No such file or directory`咯。怎么可能有符合这一大串的路径或命令存在系统中?而且中间有冒号分隔的
CivAx
2018-11-20 17:21:09 +08:00
你的环境变量加错了。
系统默认定义了一个 PATH,同时定义了 PATH 的内容。
然后你又定义了一个 PATH,同时定义了 PATH 的内容。
基于后覆盖先的顺序加载,你的 PATH 会把系统的 PATH 变量给顶掉,所以会报错。而且你仔细看看报错的内容,是 bash 报的错,说明在你定义的目录中不存在"bash"的可执行文件。

正确的写法是:
export PATH=$yourPathArgument:$PATH
在 PATH 中用冒号隔开后接“$PATH ”,表示加载“之前被定义过的 PATH 变量”。

这是一个范例:
export JAVA_HOME=/usr/local/jdk/latest
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
dwzhao
2018-11-20 18:12:12 +08:00
@jasonyang9,是我懵逼了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/509663

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX