Если вы хотите просто изменить среду с помощью команды, заданной сценарием, без перезагрузки всего профиля, используйте:
eval "$(curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash | grep -E -v "^.?=>")"
grep
удалит комментарии, начинающиеся с =>
и, возможно, ведущий скрытый символ.
eval
выполнит команды в текущей оболочке.
, затем не используйте -x
, поскольку command -v nvm
возвращает nvm, а не полный путь.
if [ -n "$(command -v nvm)" ]; then
nvm install
exit $?
fi
И, следуя тройному совету, используйте exit
, чтобы сохранить код возврата.
Сценарий становится:
#!/bin/bash
if ! [ -n "$(command -v nvm)" ]; then
echo 'Installing Node version manager (http://nvm.sh).' >&2
eval "$(curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash | grep -E -v "^.?=>")"
fi
if [ -n "$(command -v nvm)" ]; then
nvm install
exit
fi
exit 1