当我在其中添加环境并想在环境下运行程序时,为什么 PATH 不起作用?

当我在其中添加环境并想在环境下运行程序时,为什么 PATH 不起作用?

cow我在下面放置了一个程序/opt,然后通过添加来编辑 .bashrc

export PATH=“$PATH:/opt” 

所以现在 $PATH 有/opt

但是当我想cow直接运行时,我得到

$ cow
The program 'cow' is currently not installed. You can install it by typing:
sudo apt-get install fl-cow

我还需要跑/opt/cow

怎么了?

答案1

在我看来,您使用了错误类型的引号 (““) 与 (“”):

echo $PATH
/home/anon/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
sudo bash -c 'echo \$0 this is a test' >/opt/test.sh;sudo chmod +x /opt/test.sh
anon@masterbox:~$ export PATH=“$PATH:/opt”
anon@masterbox:~$ test.sh
bash: test.sh: command not found
anon@masterbox:~$ . .bashrc
anon@masterbox:~$ export PATH="$PATH:/opt"
anon@masterbox:~$ test.sh
/opt/test.sh this is a test
anon@masterbox:~$ 

编辑:为了进一步澄清这里的问题,看看当我按照你的方式做时会发生什么:

$ echo $PATH
# this is correct
/home/anon/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
$ export PATH=“$PATH:/opt” 
$ echo $PATH
# this is incorrect
“/home/anon/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/opt”
$ 

Bash 无法以这种方式正确解释 PATH 变量。 Unicode 引号在 UNIX 系统上不能以这种方式工作。希望这能回答您的问题。

答案2

对我来说,有 2 组文件可以在其中定义 $PATH:
1. bash 文件,例如 ~/.profile、~/.bashrc 及其 /etc 等效文件
2. /etc/enviroment 和 ~/.pam_environment
这些位置有些对于所有用户来说是全局的,有些是特定于用户的。
我建议您编写在这些位置之一使用的命令,请记住带有仅适用于使用放置文件的主目录的用户。
请记住,如果您在 ~/.bashrc 中写入路径,例如用户 Robertus,如果您更改为 root,则路径将更改为 root 1,遵循他自己的 ~/.bashrc 和公司。

我希望你觉得我的回答有用

答案3

如果你运行它,cow会工作吗: /opt/cow?如果不是,检查文件'cow'的模式;它需要设置可执行位。如果没有,请使用:chmod +x /opt/cow

相关内容