2016-10-15 2 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 

내 컴퓨터에서 잘 작동합니다. 하지만 내 아마존 ex2 인스턴스는 아닙니다. 내 우분투 16.04 LTS 내 AWS EC2 인스턴스 및 Ubuntu 15.04 내 로컬 시스템에서 실행하고 있습니다. 내가받는 오류는 npm-permission.sh: line 2: =/usr: No such file or directory

두 번째 줄입니다. 이슈가 뭐야? 왜 작동하지 않습니까?

+0

첫 번째 줄로 시도하십시오. 'npm = $ (npm config get prefix)' – Cyrus

+0

사이드 노트 : $ npm이 비어있는 것 같습니다. 이 경우에는 if [[ "$ npm"= "/ ..."]]'로 if 절을 변경해야합니다. – MrTux

+1

@Cyrus this worked ...이 질문을 답으로 사용할 수 있습니까? 그래서 나는 그것을 표시 할 수있다. –

답변

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 전문가가 약간의 빛을 던질 수도 있습니다.

관련 문제