nvmを入れたらscpが動かなくなったときの対処
久しぶりにホスト間でファイルをコピーしようとして、scpを使ってみたら、うまくコピーできなくなっていました。
どういうこと?
scpを実行すると謎?のメッセージが出力されてどうもコピーされていないようです。
$ scp hostname:/home/user/filename .
Now using node v8.2.1 (npm v5.3.0)
$
進捗がでないし、ログインしたときに表示されるnvmのメッセージが表示されています。
どうして?
nvmをインストールするときに、一般的に以下のコマンドを利用します。
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.32.1/install.sh | bash
これを実行すると、.bashrcに自動的に以下が追加されます。
# nvm
if [ -s ~/.nvm/nvm.sh ] ; then
source ~/.nvm/nvm.sh
nvm use default
fi
一方、scpを実行すると、内部でシェルが起動されるため、.bashrcを実行します。
そのため、nvm use defaultが実行され、「Now using node v8.2.1 (npm v5.3.0)」が表示されてしまいます。
SCPはシェル実行時に標準出力があるとそれを表示して動作を停止してしまう仕様のようです。
どうすれば?
ようするに、シェル実行時に標準出力がなくなればよいのです。
標準出力しない
「Now using node v8.2.1 (npm v5.3.0)」を出力するのは、nvm use defaultです。なので以下のようにしましょう。
# nvm
if [ -s ~/.nvm/nvm.sh ] ; then
source ~/.nvm/nvm.sh
nvm use default > /dev/null
fi