如果插入闪存驱动器,我已经修改了我的 .profile 以包含一个文件夹。当以用户身份运行命令时,它工作正常,但告诉我脚本必须由 sudo 运行(这就是我想要的)。但是,当我尝试使用 sudo 运行它时,我得到“找不到命令”
我的 /var/www 文件夹中有一个符号链接(flash)指向我的 /media/flash 驱动器。(不要介意这个设置,因为它只是用于开发人员)
这是我的用户的 .profile :
# set PATH so it includes flash scripts
if [ -d "/var/www/flash/scripts" ] ; then
PATH="/var/www/flash/scripts:$PATH"
fi
Run Code Online (Sandbox Code Playgroud)
尝试以 sudo 身份运行时,我得到:
sudo: script: command not found
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
sudo当您尝试访问根目录时运行脚本。所以你的$HOME/.profile不会被访问,而是/root/.profile会被访问。
$HOME/.profile因此,请对您所做的进行更改/root/.profile。创造/root/.profile。使用以下命令。
sudo su
cd /root
touch .profile
Run Code Online (Sandbox Code Playgroud)
进行更改后尝试运行脚本。
或编辑$HOME/.bashrc并添加以下行
alias sudo='sudo env PATH=$PATH $@'
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助。
小智 3
这就是 ubuntu 中 sudo 的行为..
例如运行以下命令
echo 'echo $PATH' | sh
Run Code Online (Sandbox Code Playgroud)
比这个
echo 'echo $PATH' | sudo sh
Run Code Online (Sandbox Code Playgroud)
你看到输出是不同的!为了避免不同的路径,请将以下内容放入 ~/.bashrc 中
alias sudo='sudo env PATH=$PATH'
Run Code Online (Sandbox Code Playgroud)