bash配置文件适用于用户,但不适用于sudo


9

我已经修改了.profile文件,以便在插入闪存驱动器时包含一个文件夹。以用户身份运行命令时,它可以正常运行,但告诉我该脚本必须由sudo运行(这就是我想要的)。但是,当我尝试使用sudo运行它时,出现“找不到命令”

我的/ var / www文件夹中有一个指向/ 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    

有任何想法吗?

Answers:


3

当您sudo尝试访问根目录时运行脚本。因此,您将$HOME/.profile不会/root/.profile被访问。

因此,请什么都你在做的变化$HOME/.profile/root/.profile。创造/root/.profile。使用以下命令。

sudo su
cd /root
touch .profile

进行更改后,请尝试运行脚本。

或编辑$HOME/.bashrc并添加以下行

alias sudo='sudo env PATH=$PATH $@'

希望这可以帮助。


我尝试了“ alias sudo ='sudo env PATH = $ PATH $ @'”,但我收到了“ env:wp:权限被拒绝”
user564448 2012年

抱歉,“ wp”是脚本
user564448

尝试我提到的其他步骤。
devav2 2012年

1
在这里阅读,您应该使用sudo su -p
devav2


1

这就是ubuntu中sudo的行为。

例如运行以下命令

echo 'echo $PATH' | sh

比这一个

echo 'echo $PATH' | sudo sh 

您会看到输出不同!为了避免不同的路径,请将以下内容放入〜/ .bashrc中

alias sudo='sudo env PATH=$PATH'

将别名sudo ='sudo env PATH = $ PATH'放入我的.bashrc后,我得到“ env:wp:权限被拒绝”
user564448 2012年

-1

您也可以将文件移动到sudoers使用的目录中:

    sudo mv $HOME/bash/script.sh /usr/sbin/ 
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.