endless pulse

どっくんどっくんふるえる毎日を過ごしています

さくらレンタルサーバーで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など各種シェル用

参考:https://help.sakura.ad.jp/app/answers/detail/a_id/2105/~/%E3%80%90%E3%81%95%E3%81%8F%E3%82%89%E3%81%AE%E3%83%AC%E3%83%B3%E3%82%BF%E3%83%AB%E3%82%B5%E3%83%BC%E3%83%90%E3%80%91%E5%9F%BA%E6%9C%AC%E4%BB%95%E6%A7%98

.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

よかった。