2016-10-15 4 views
0

私はシステム上でnpmパーミッションを修正する単純なbashファイルを持っています。これは次のようになりますローカルコンピュータで動作しているが、Amazon EC2インスタンスで動作していないBashファイル

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 

これは私のマシンで正常に動作します。しかし、私のamazon ex2インスタンスではありません。私は自分のAWS EC2インスタンスでUbuntu 16.04 LTSを実行しており、ローカルシステムでUbuntu 15.04を実行しています。私が得るエラーはnpm-permission.sh: line 2: =/usr: No such file or directory

2番目の行です。どうした?それはなぜ機能しないのですか?

+0

これを最初の行で試してください: 'npm = $(npm config get prefix)' – Cyrus

+0

サイドノート:$ npmは空であるようです。この場合、if節を '[" $ npm "="/... "]]'に変更して失敗しないようにする必要があります。 – MrTux

+1

@Cyrusこれはうまくいった...あなたは答えとしてそれを置くことができますか?私はそれをマークすることができるように。 –

答えて

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のエキスパートは、それについていくらかの光を投げるかもしれない

関連する問題