什么是Linux中的$ PATH以及如何修改它

rug*_*ted 10 linux path

我对Linux中的这个$ PATH有几个问题.

我知道它告诉shell哪些目录要搜索可执行文件,所以:

  1. 环境变量是什么意思?
  2. 如何改变它的路径?是否建议改变它?
  3. 如果我改变它会产生什么后果?

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.


rsp*_*cer 8

首先,你在$ 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)

它是一个环境变量的事实意味着程序可以找到它的值,即它是关于程序运行的环境设置的.其他环境变量包括当前目录和当前代理的地址之类的东西.