PATH 变量是否可能被损坏?

PATH 变量是否可能被损坏?

我安装了 rbenv,一个 ruby​​ 版本管理程序。我查看了 .bashrc 文件,发现路径变量发生了如下变化:

export PATH="$HOME/.rbenv/bin:$PATH"

我认为“:$PATH”部分被包含进来是为了包含旧路径内容。我想知道如果修改路径变量的程序不包含“:$PATH”部分会发生什么。我是否无法从命令行运行某些程序,因为它们所在的 bin 目录不再包含在新路径变量中?

答案1

你是对的。因此,第三方软件包应该只扩展当前路径,而不是限制它。

答案2

PATH是一个以冒号分隔的目录列表,您的 shell(bashfishkshsh等)使用它来查找要执行的内容。如果您输入到 shell 中的行的第一个单词不是 Shell 内置命令或别名,shell 将逐步浏览 中的目录列表$PATH,查找与您输入的命令的第一个单词同名的可执行文件。

command not found常见命令(da/media/w3/0123-4567/PODCASTS/2016-Nov-27/loe-wildlife-decline.mp3tels、 ...)的错误表明 格式错误PATH。可以使用 来设置紧急情况PATH(足以让您修复问题)export PATH=/usr/bin:/bin:/usr/local/bin:/snap/bin

许多PATH错误都是 shell 语法错误(Space在 之前或 之后,=没有PATH=value空格)。

至于“路径损坏”,如果我创建了一个“特殊”版本的ls,存储在中/.evil/bin/ls,并且我可以破坏你的路径,以便它具有/.evil/bin /bin,当你输入 时ls,shell 将运行/.evil/bin/ls而不是/bin/ls。众所周知的陷阱,但当它变得有用时,你的系统已被彻底渗透。

答案3

您将能够运行它们,只需指定完整路径即可。修改PATH不会修改相关的权限。

相关内容