我已修改 .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
当我尝试以 sudo 身份运行时,我得到:
sudo: script: command not found
有任何想法吗?
答案1
当您运行脚本时,sudo
您正在尝试访问 root。因此,您$HOME/.profile
将不会被访问,而是/root/.profile
会被访问。
$HOME/.profile
因此,请对进行与 中相同的更改/root/.profile
。要创建/root/.profile
。请使用以下命令。
sudo su
cd /root
touch .profile
进行更改后尝试运行脚本。
或者编辑$HOME/.bashrc
并添加以下行
alias sudo='sudo env PATH=$PATH $@'
希望这可以帮助。
答案2
这就是 ubuntu 中 sudo 的行为。
例如运行以下命令
echo 'echo $PATH' | sh
还有这个
echo 'echo $PATH' | sudo sh
你会看到输出不同!为了避免不同的路径,请将以下内容放入你的 ~/.bashrc 中
alias sudo='sudo env PATH=$PATH'
答案3
$PATH
您可以在使用 时保留 的值sudo
。使用visudo
添加到$PATH
要保留的变量列表中。在 中类似下面的一行/etc/sudoers
应该可以解决问题:
Defaults env_keep += "PATH"
答案4
您还可以将文件移动到 sudoers 使用的目录中:
sudo mv $HOME/bash/script.sh /usr/sbin/