В процессе развертывания я запускаю yarn install
через соединение S SH в неинтерактивной оболочке. Поскольку необходимо использовать альтернативную версию node.js (по умолчанию версия 8.x на сервере слишком мала), псевдоним создается и загружается в сценарий bash через соединение S SH:
shopt -s expand_aliases
source ~/.bashrc
node -v
Сценарий .bashr c выглядит следующим образом:
export PATH=/opt/plesk/node/12/bin/node:$PATH
alias node="/opt/plesk/node/12/bin/node"
Запуск node -v
выдаст правильную версию 12.x. Правильная версия также выводится при выполнении JavaScript кода:
node -e "console.log(process.versions.node);"
Но пряжа вызывает внутренний узел с помощью exe c (https://github.com/yarnpkg/yarn/blob/master/bin/yarn#L20). И это вызовет версию узла по умолчанию вместо псевдонима. Это означает, что yarn versions
перечисляет узел 8.x.
Это только в случае неинтерактивного bash. Если я вызываю это в интерактивной оболочке, пряжа использует правильный псевдоним узла версии 12.x.
Как запустить пряжу в неинтерактивном bash с верной версией узла?