профиль bash работает для пользователя, но не для sudo

9

Я изменил свой .profile, добавив в него папку, если флэш-диск подключен. При запуске команды от имени пользователя она работает нормально, но говорит, что скрипт должен запускаться с помощью sudo (это то, что я хочу). Однако, когда я пытаюсь запустить его с помощью sudo, я получаю команду «not found»

У меня есть символическая ссылка (flash) в папке / 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    

Любые идеи?

user564448
источник

Ответы:

3

Когда вы запускаете скрипт, когда 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 $@'

Надеюсь это поможет.

devav2
источник
Я пробовал "псевдоним sudo = 'sudo env PATH = $ PATH $ @'", но я получаю "env: wp: В
доступе
извините, "wp" это скрипт
user564448
Попробуйте другой шаг, который я упомянул.
devav2
1
Прочитайте это здесь, вы должны использоватьsudo su -p
devav2
2

Вы можете сохранить значение $PATHпри использовании sudo. Используйте visudoдля добавления $PATHв список переменных для сохранения. Строка, подобная следующей, /etc/sudoersдолжна помочь:

Defaults env_keep += "PATH"
Деннис Каарсемакер
источник
1

это поведение sudo в Ubuntu ..

например, запустите следующую команду

echo 'echo $PATH' | sh

и чем этот

echo 'echo $PATH' | sudo sh 

Вы видите, что выход отличается! чтобы избежать разных путей, поместите в ваш ~ / .bashrc следующее

alias sudo='sudo env PATH=$PATH'
Кристофер Янке
источник
После помещения псевдонима sudo = 'sudo env PATH = $ PATH' в мой .bashrc я получаю "env: wp: В
доступе
-1

Вы также можете переместить ваш файл в каталог sudoers:

    sudo mv $HOME/bash/script.sh /usr/sbin/ 
LeGilles
источник