Help us understand the problem. What is going on with this article?

知らないとrsyncでもハマるシェル初期化

More than 3 years have passed since last update.

シェルの初期化を調べたキッカケ

先日新たにセットアップしたcentOSインスタンスにrsyncしようとしたところ、
下記エラーが起こった。

protocol version mismatch - is your shell clean?
(see the rsync man page for an explanation)
rsync error: protocol incompatibility (code 2) at compat.c(69)

rsyncのoptionでなにかミスったかと思ったけど、
ぐぐってココ
There is probably a script producing output in your .bash_profile or similar fileとおっしゃっていた。

sshでサーバへ接続してみると接続直後に

Now using node v0.10.29

が出力されていた。

シェル初期化について

シェルは、起動時の環境設定を下記のように読み込む

  • /etc/profileがあれば読み込む
  • シェルがログインシェルとして起動されたか否か
    • ログインシェルとして起動された場合、~/.bash_profileか~/.bash_loginか~/.profileの最初に見つかったファイルを読み込み
    • 非ログインシェルの場合、~/.bashrcを読み込み

~/.bash_profileや ~/.bashrcの中ではnodeのバージョンに関する処理はなかった。
/etc/profileの最後で/etc/profile.d/ 配下のシェルを実行していることが分かった。

/etc/profile の一部抜粋

for i in /etc/profile.d/*.sh ; do
    if [ -r "$i" ]; then
        if [ "${-#*i}" != "$-" ]; then
            . "$i"
        else
            . "$i" >/dev/null 2>&1
        fi
    fi
done

/etc/profile.d/ にあるファイルをみると
PS1.sh やら、colorls.cshやら
grep.sh、lang.csh、lang.sh、less.csh
less.sh、node.sh、nvm.sh、vim.csh、
vim.sh、which2.sh

アプリケーション毎の設定を書いている模様。

vim.shファイルの中身は、

$ cat /etc/profile.d/vim.sh 
if [ -n "$BASH_VERSION" -o -n "$KSH_VERSION" -o -n "$ZSH_VERSION" ]; then
  [ -x /usr/bin/id ] || return
  ID=`/usr/bin/id -u`
  [ -n "$ID" -a "$ID" -le 200 ] && return
  # for bash and zsh, only if no alias is already set
  alias vi >/dev/null 2>&1 || alias vi=vim
fi

vim ファイル名 = vi ファイルなのは、このシェルが初期化で実行されているからなのか!!

シェル実行時、標準出力を止める

さて、node関連は nvm.shに間違いない。

nvm.sh

. /usr/local/nvm/nvm.sh
nvm use v0.10.29

nvm use v0.10.29nvm use v0.10.29 > /dev/nullに修正

問題なくrsyncできるようになった(●^o^●)

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away