Почему я не могу явно получить файл с помощью su-c?

Я пытаюсь добраться 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 файл явно. Кто-либо может сказать мне почему?

0
задан 13 April 2017 в 15:25

1 ответ

Файл был получаемый, но выполнение было остановлено, когда это достигло этого case оператор, который только продолжится, если это будет получено в оболочке в интерактивном режиме.

case $- in
    *i*) ;;
      *) return;;
esac

переменная $- представляет флаги, с которыми была инициализирована текущая оболочка. Если это не будет видеть i (флаг для интерактивного режима), то код возвратится. Поскольку оболочка не выполнялась в интерактивном режиме, source .bashrc остановился, когда это достигло того case оператор.

Для ссылки, вывод echo $- при использовании нормальной интерактивной оболочки himBH. Вывод su -l -c 'echo $-' ghost, однако, я вижу hBc.

Перемещение эти nvm строки выше того оператора решили проблему, также, как и помещение их в чистое .profile или .bashrc.

1
ответ дан 29 September 2019 в 12:45

Другие вопросы по тегам:

Похожие вопросы: