Используйте псевдонимы с exe c в неинтерактивной оболочке - PullRequest
0 голосов
/ 05 февраля 2020

В процессе развертывания я запускаю 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 с верной версией узла?

...