Я изменил свой .profile, добавив в него папку, если флэш-диск подключен. При запуске команды от имени пользователя она работает нормально, но говорит, что скрипт должен запускаться с помощью sudo (это то, что я хочу). Однако, когда я пытаюсь запустить его с помощью sudo, я получаю «команда не найдена»
У меня есть символическая ссылка (flash) в папке / var / www, указывающая на мой / media / flash диск. (не обращайте внимания на эту настройку, так как она предназначена только для dev)
это мой профиль пользователя.
# 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
есть идеи?
Вы также можете переместить файл в каталог, используемый sudoers:
sudo mv $HOME/bash/script.sh /usr/sbin/
Таково поведение sudo в Ubuntu.
, например, выполните следующую команду
echo 'echo $PATH' | sh
и, чем эта
echo 'echo $PATH' | sudo sh
, вы увидите, что вывод отличается! чтобы избежать разных путей, поместите следующее в ваш ~ / .bashrc
alias sudo='sudo env PATH=$PATH'
Когда вы запускаете скрипт как 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 $@'
Надеюсь, это поможет.
Вы можете сохранить значение $PATH
при использовании sudo
. Используйте visudo
, чтобы добавить $PATH
в список переменных для сохранения. Строка, подобная следующей в /etc/sudoers
, должна помочь:
Defaults env_keep += "PATH"