mochikoAsTechのdig日記

当方好きなコマンドはdigです!お友達から!!よろしくお願いします!!!

rootだけvimじゃなくてvi使わされてるのなんで?

ここからここまでぜーんぶ先頭に「//」を入れてコメントアウトしたーい!みたいなときに、vimの短形ビジュアルモード便利!と思ったけど、viじゃ使えないのか・・・vim限定なのか・・・・つーかもうシンボリックリンクになってて、この2つ完全に同じだと思ってた・・・ということがあったのでメモっておく。

一般ユーザとrootユーザでviの中身は違う

そもそも私の中の理解は「viがもっと改良されたのがvim。でも最近はviって打っても、実体としてはvim使ってるので、両方同じものだと思ってよい」くらいだった。

なんだけど、viとvimでなんか挙動違う!と思ったら、一般ユーザとrootユーザで、viの中身が違うんだね。

こっちが一般ユーザで「viのフルパス教えろよー」としたとき。「viはvimエイリアス(別名)だよ、フルパスは/usr/bin/vimだよ」って返事が返ってきてる。

$ which vi
alias vi='vim'
/usr/bin/vim

そしてこっちがrootユーザで同じこと聞いたとき。「viのフルパスは/bin/viだよ」って返ってきてる。

# which vi
/bin/vi

えー、なんでrootは生のままのvi使わされてるの・・・?

なぜrootだけ生のままのviを使わされているのか?

色々調べて行ったら、/etc/profile.d/vim.shでわざわざUIDが200以上のユーザだけに限定して「alias vi=vim」してて、そのvim.shを/etc/bashrcの中で読み込んでる。(つまりrootユーザのUIDは0なので、viにエイリアスが設定されない)

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

えー、なんでー、なんでrootユーザはvim使えないの・・・vim-enhancedパッケージのあるなしとか関係あるの?

別に自分で/root/.bashrhで「alias vi='vim'」とかしてもいいんだけど、わざわざこうしてある理由が分からないまま、設定しちゃうのも嫌だしなー。