我对Linux中的这个$ PATH有几个问题.
我知道它告诉shell哪些目录要搜索可执行文件,所以:
Chr*_*ris 13
要获取路径当前$PATH变量,请输入:
echo $PATH
Run Code Online (Sandbox Code Playgroud)
它告诉你的shell在哪里查找二进制文件.
是的,您可以更改它 - 例如,$PATH使用您的自定义脚本添加到该文件夹.
所以:如果您的脚本是/usr/local/myscripts执行它们,您将必须输入脚本的完整路径:/usr/local/myscripts/myscript.sh
更改$PATH变量后,您只需键入myscript.sh以执行脚本.
以下是$PATH来自RHEL 的示例:
在/ usr/Kerberos的/ bin中:在/ usr/local/bin目录:/ bin中:在/ usr/bin中:/ home/user中/箱
要更改您,$PATH您必须编辑~/.profile(或~/.bash_profile)用户或全局$PATH设置/etc/profile.
拥有不准确$PATH变量的后果之一是shell无法在没有完整的情况下找到并执行程序$PATH.
首先,你在$ PATH所做的陈述中是正确的.如果你以某种方式打破它(按照你的第三点),如果你想从终端运行/ usr/bin中的程序,你将不得不手动输入/ usr/bin/xyz.根据各个程序的工作方式,这可能会破坏一些调用其他程序的程序,因为它们只能运行ls或其他程序.
所以,如果你要玩$ PATH,我建议先把它保存到某个地方.使用命令行指令
echo $PATH > someRandomFile.txt
Run Code Online (Sandbox Code Playgroud)
将其保存在someRandomFile.txt中
您可以使用export命令更改$ PATH.所以
export PATH=someNewPath
Run Code Online (Sandbox Code Playgroud)
但是,这将完全用someNewPath替换$ PATH.由于路径中的项目由":"分隔,因此您可以通过执行向其添加项目(最好不要删除,参见上文)
export PATH=$PATH:newPath
Run Code Online (Sandbox Code Playgroud)
它是一个环境变量的事实意味着程序可以找到它的值,即它是关于程序运行的环境设置的.其他环境变量包括当前目录和当前代理的地址之类的东西.