OSX中的节点和NPM路径



我有一个非常奇怪的配置问题。

登录机器(SSH会话(并使用Interactive Shell执行以下命令,它们成功:

node --version
npm --v

但是,当我通过远程计算机执行以下脚本时:

#!/bin/bash
#Script input arguments
user=${1} 
server=${2} 
#Tell the shell to quote your variables to be eval-safe!
printf -v user_q '%q' "$user"
printf -v server_q '%q' "$server"
#
# Script variables
address="$user_q"@"$server_q"
#
function run {
    ssh "$address" /bin/bash "$@"
}

run << SSHCONNECTION
node --version
npm --v
 exit
SSHCONNECTION

我将获得以下输出:

/bin/bash:第2行:节点:找不到命令

/bin/bash:第3行:npm:找不到命令

我意识到问题可能是.bash_profile文件配置

export PATH="/usr/local/bin/npm:/usr/local/bin/node:/usr/local/bin:$PATH"

另外,这是npm config get prefix的结果:

/usr/local

您能建议我做错什么吗?

我相信发生了什么事,这是由于.bash_profile仅在调用bash的交互式外壳时执行的事实,请在此处进行更多信息:https://www.gnu.gnu.org/software/bash/manual/html_node/bash-startup-files.html#bash-startup-files

直接调用脚本并将脚本传递到/bin/bash时,它将表现为非相互作用的外壳,默认行为不读取.bash_profile

我建议在/etc/environment中设置路径变量,以便对所有用户和所有脚本的方式都会影响。

最新更新