31
28

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Last updated at Posted at 2014-07-16

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

先日新たにセットアップした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^●)

31
28
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
31
28

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?