bash配置文件适用于用户但不适用于sudo
我已经修改了我的.profile以包含一个文件夹,如果插入了一个闪存驱动器。当以用户身份运行该命令它工作正常但告诉我必须由sudo运行该脚本(这是我想要的)。 但是,当我尝试用sudo运行它时,我得到“命令未找到”
我的/ var / www文件夹中有一个指向我的/ media / flash驱动器的符号链接(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
有任何想法吗?
当您以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 $@'
希望这可以帮助。
使用sudo
时可以保留$PATH
的值。 使用visudo
将$PATH
添加到要保留的变量列表中。 /etc/sudoers
的以下行应该可以解决问题:
Defaults env_keep += "PATH"
这就是ubuntu中sudo的行为..
例如,运行以下命令
echo 'echo $PATH' | sh
而不是这一个
echo 'echo $PATH' | sudo sh
你看到输出是不同的! 为了避免不同的路径,将以下内容放在〜/ .bashrc中
alias sudo='sudo env PATH=$PATH'
您还可以在sudoers used目录中移动文件:
sudo mv $HOME/bash/script.sh /usr/sbin/