bash:虽然它在$ PATH中找不到脚本

时间:2017-05-03 14:32:37

标签: linux bash shell debian

在基于LMDE的笔记本电脑上,我有一个脚本upgrade.sh,它只运行以下命令:

#!/bin/sh

apt-get upgrade
apt-get dist-upgrade

该脚本位于/home/francois/scripts目录中。我可以从这个目录中轻松运行它。它只是有效。现在我运行以下命令:

$ sudo ln -s /home/francois/scripts /opt/scripts
$ sudo ln -s /opt/scripts /usr/local/bin/scripts

并创建文件/etc/profile.d/myscripts.sh

只有一行:

export PATH=$PATH:/usr/local/bin/scripts

我输入

$ echo $PATH

并看到它包含/usr/local/bin/scripts

但是当我跑步时

$ sudo upgrade.sh

系统显示the command not found

的任何目录

ls -l显示-rwxr-xr-x 1 francois francois ...

1 个答案:

答案 0 :(得分:1)

Sudo不会继承调用者的环境变量。 $PATH是其中一个变量。

要使其继承从中调用的shell的环境变量,请将其作为sudo -E [cmd]

运行