2017-01-06 3 views
0

スクリプトを使用してVMの設定を自動化しようとしていますが、~/.bashrc~/.bash_profile、または~/.profileのいずれかに設定されるパス変数にアクセスする際に問題が発生します。なぜリモートVM上でnvmとyarnを使用してノードを設定できないのですか?

私のリモートVMは、ubuntu 14.04 LTSを実行していて、私はssh経由でデプロイしています。

これはNVMをインストールすることで、仮想マシンを構成するためにbashコマンドとして実行されるように一緒に結合されます配列である:

リターン[ rm -rf ~/.nvmsudo apt-get updatesudo apt-get install -y build-essential libssl-devcurl -sL https://raw.githubusercontent.com/creationix/nvm/v0.31.0/install.sh -o install_nvm.shbash install_nvm.shecho "source ~/.nvm/nvm.sh" >> ~/.bash_profile ] .join( '\ n');

return [ 
 
     `rm -rf ~/.nvm`, 
 
     `sudo apt-get update`, 
 
     `sudo apt-get install -y build-essential libssl-dev`, 
 
     `curl -sL https://raw.githubusercontent.com/creationix/nvm/v0.31.0/install.sh -o install_nvm.sh`, 
 
     `bash install_nvm.sh`, 
 
     `echo "source ~/.nvm/nvm.sh" >> ~/.bash_profile` 
 
    ].join('\n');

しかし、私は実際にノードと糸をインストールする次のスクリプトを実行すると、それがnvmを見つけることができません。

return [ 
 
     `nvm install ${config.node.version}`, 
 
     `nvm use ${config.node.version}`, 
 
     `echo "using node $(node -v) and npm $(npm -v)"`, 
 
     `curl -o- -L https://yarnpkg.com/install.sh | bash`, 
 
     'echo "export PATH="$HOME/.yarn/bin:$PATH"" >> ~/.bash_profile', 
 
    ].join('\n');

これは誤りであります: bash:nvm:command見つからない

私はsshを使用して手動でさまざまなプロファイルに何も追加したくありません。私はすべてがスクリプトによって行われることを望みます。また、~/.nvm/nvm.shのソースを避けたり、sshセッションの開始時にプロファイルを取得したりしたいと思っています。私はsshセッションが自動的に~/.bash_profileを送信するという印象を受けていました。これらの変数は正しいでしょうか?そうでない場合は、これらの変数に自動的にアクセスできるようにデプロイメントスクリプトを構成する方法は他にありますか?あなたは私がnvmのコマンドを実行する前に、実際にsource ~/.nvm/nvm.shに行を追加します。あなたのコメントで言ったように、あなたが& &を使用しているという事実に基づいて

+0

あなたはすでに 'nvm'は、時間によって、第2にインストールされていることを確認しましたセットコマンドは実行されますか?それが存在するかどうかを確かめたいだけです。また、あなたのシェルが '/ bin/sh'のようなものではなく、'/bin/bash'に設定されていることを確認したのでは、 – v0rtex

+0

したがって、2番目のコマンドは最初のスクリプトの後に&&として実行されます(ノードプロセスは最初のスクリプトから0で終了します)。ユーザーシェルについては、どうすれば確認できますか? – roonie

+0

また、それはなぜ重要なのでしょうか? – roonie

答えて

0

。そのコマンドが実行されるまで、コマンドはシェルで利用できない可能性があります。

変更この:これに

return [ 
 
     `rm -rf ~/.nvm`, 
 
     `sudo apt-get update`, 
 
     `sudo apt-get install -y build-essential libssl-dev`, 
 
     `curl -sL https://raw.githubusercontent.com/creationix/nvm/v0.31.0/install.sh -o install_nvm.sh`, 
 
     `bash install_nvm.sh`, 
 
     `echo "source ~/.nvm/nvm.sh" >> ~/.bash_profile` 
 
    ].join('\n');

return [ 
 
     `rm -rf ~/.nvm`, 
 
     `sudo apt-get update`, 
 
     `sudo apt-get install -y build-essential libssl-dev`, 
 
     `curl -sL https://raw.githubusercontent.com/creationix/nvm/v0.31.0/install.sh -o install_nvm.sh`, 
 
     `bash install_nvm.sh`, 
 
     `echo "source ~/.nvm/nvm.sh" >> ~/.bash_profile`, 
 
     `source ~/.nvm/nvm.sh` 
 
    ].join('\n');

+0

私は、nvm実行可能ファイルを入手すると、そのファイルにアクセスできるようになります。私はそれをやる必要のないスクリプトを書こうと思っていました。これは、ローカルでnvmを使用する必要がないのと同じ方法です – roonie

関連する問題