Bash文件在本地计算机上工作但不在Amazon EC2实例上工作

时间:2016-10-15 11:00:00

标签: bash amazon-ec2

我有一个简单的bash文件修复了我系统上的npm权限。它就像这样

npm=`npm config get prefix`
echo "$npm"

if [[ $npm = "/usr/local" ]]
    then
    echo "Yes it's /usr/local"
    echo $npm/{lib/node_modules,bin,share}
    sudo chown -R $(whoami) $npm/{lib/node_modules,bin,share}
    echo "Complete"
elif [[ $npm = "/usr" ]]
    then
    echo "Uhhohh it's /usr gotta use a different method"
    mkdir ~/.npm-global
    npm config set prefix '~/.npm-global'
    export PATH=~/.npm-global/bin:$PATH
    source ~/.profile
    echo "No"
fi

npm install -g forever
npm install -g pm2
npm install -g bower

这在我的机器上工作正常。但不是我的亚马逊ex2实例。我在我的AWS EC2实例上运行ubuntu 16.04 LTS,在本地系统上运行Ubuntu 15.04。我得到的错误是npm-permission.sh: line 2: =/usr: No such file or directory

这是第二行。有什么问题?为什么不起作用?

1 个答案:

答案 0 :(得分:0)

所以@Cyrus在评论中建议的更改我修改了脚本,如果[[$ npm ='']]使其工作。这是工作脚本。

npm=$(npm config get prefix)
echo "$npm"

if [[ $npm = "/usr/local" ]]
    then
    echo "Yes it's /usr/local"
    echo $npm/{lib/node_modules,bin,share}
    sudo chown -R $(whoami) $npm/{lib/node_modules,bin,share}
    echo "Complete"
elif [[ $npm = "/usr" ]]
    then
    echo "Uhhohh it's /usr gotta use a different method"
    mkdir ~/.npm-global
    npm config set prefix '~/.npm-global'
    echo "export PATH=~/.npm-global/bin:$PATH" >> ~/.profile
    source ~/.profile
    echo "No"
fi

我仍然不知道它是如何工作的,但确实如此。一些bash专家可能会对它有所了解。