さくらレンタルサーバーでPATHを書き換える
どうもこんにちは、えみーです。
さくらレンタルサーバーで、PATHを書き換えようとしたら若干はまったので、おぼえがき。
結論から言うと、ログインシェルの実行順にはまった。
さくらレンタルサーバーのOSは、FreeBSD 9.1。シェルはcsh(デフォルトのまま)。
やろうとしたこと
さくらレンタルサーバーは、デフォルトのRubyがバージョン1.8.7だったので、最新にしてやろうと思った。
レンタルサーバーなので、/usr/local/bin/rubyをそのまま更新するのは無理なので、
$HOME/local/bin内に最新rubyをインストールして、PATHの優先順位を$HOME/local/bin > /usr/local/binにする…というごく一般的(?)なことをしようとした。
やったこと
Rubyインストール
% wget https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.1.tar.gz % tar xzvf ruby-2.3.1.tar.gz % cd ruby-2.3.1 % ./configure --prefix=$HOME/local --with-opt-dir=$HOME/local % make && make install
PATHの書き換え
.chsrc内のPATHを書き換えた。
↓ $HOME〜のパスを前に持ってきた。
set path = ($HOME/bin $HOME/local/bin /sbin /bin /usr/sbin /usr/bin /usr/local/s bin /usr/local/bin $HOME/local/lib/ruby/gems)
結果
% ruby -v ruby 1.8.7 (2012-10-12 patchlevel 371) [amd64-freebsd9] % which ruby /usr/local/bin/ruby
変わって…ない?
調査
.cshrcで書き換えたはずのPATHが、結局/usr/local/binが優先されたPATHになっている。
echoコマンドで確認。
% echo $PATH
ログインシェルにあたりをつける
さくらのレンタルサーバーにあるログインシェルは以下。
- .cshrc
- .login
- .login_conf
- .profile
- .shrcなど各種シェル用
.cshrcしか直していなかったので、他のシェルも修正することにする。
結果
.loginシェルが最後にPATHを書き換えていた模様。
よくわからなかったので、各ログインシェルにechoコマンドで何かしらメッセージを吐かせて確かめました。
てっきり、.loginよりも.cshrcが後に使われるんだと思ってたんだけど、、最初のSSHログインではダメなんだろうか。でも実際そうだったんだから仕方ないか。
参考:
ちなみに、今回はシェルはcshのままなので、.profileや.shrcは使われてません。
% ruby -v ruby 2.3.1p112 (2016-04-26 revision 54768) [x86_64-freebsd9.1] % which ruby /home/[ユーザー名]/local/bin/ruby
よかった。