Я пытаюсь добраться su
кому: source /home/ghost/.bashrc
, но это, кажется, не загружает содержание:
$ su -l -c 'source /home/ghost/.bashrc; nvm' ghost
-su: nvm: command not found
Я использую nvm для управления Версиями узла. Nvm обычно получается ghost
пользователь в /home/ghost/.bashrc
:
# in /home/ghost/.bashrc
export NVM_DIR="/home/ghost/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" # This loads nvm
Я нашел от они questsions то помещение nvm
init кодируют в /home/ghost/.profile
делает nvm
доступный su -l
так как это запускает оболочку входа в систему.
Я все еще не могу выяснить, почему я не могу source
файл явно. Кто-либо может сказать мне почему?
Файл был получаемый, но выполнение было остановлено, когда это достигло этого case
оператор, который только продолжится, если это будет получено в оболочке в интерактивном режиме.
case $- in
*i*) ;;
*) return;;
esac
переменная $-
представляет флаги, с которыми была инициализирована текущая оболочка. Если это не будет видеть i
(флаг для интерактивного режима), то код возвратится. Поскольку оболочка не выполнялась в интерактивном режиме, source .bashrc
остановился, когда это достигло того case
оператор.
Для ссылки, вывод echo $-
при использовании нормальной интерактивной оболочки himBH
. Вывод su -l -c 'echo $-' ghost
, однако, я вижу hBc
.
Перемещение эти nvm
строки выше того оператора решили проблему, также, как и помещение их в чистое .profile
или .bashrc
.