/etc/login.conf and ~/.cshrc

現在のFreeBSDデフォルトの.cshrcには次のような部分がある。

# These are normally set through /etc/login.conf.  You may override them here
# if wanted.
# set path = (/sbin /bin /usr/sbin /usr/bin /usr/games /usr/local/sbin /usr/local/bin $HOME/bin)
# setenv        BLOCKSIZE       K
# A righteous umask
# umask 22

すなわち、この部分で書かれていることはコメントアウトされているが、通常は/etc/login.confによって設定されるから書く必要はないよ、もしサイトポリシーである/etc/login.confと異なる設定をする場合には、コメントをとって設定してね、という意味だと理解できる。

/etc/login.confを確認すると、

default:\
		...
        :setenv=MAIL=/var/mail/$,BLOCKSIZE=K:\
		...
        :path=/sbin /bin /usr/sbin /usr/bin /usr/games /usr/local/sbin /usr/local/bin ~/bin:\
		...
        :umask=022:

という感じに書かれている。だから、~/.cshrcにはset pathを書かなくても~/binにパスが通ると思う。しかし、それほど単純ではないようだ。

外部からログインした場合は、/etc/login.confの中身が正しく設定されて、~/binにパスが通っているが、MateのTerminalを開いた場合、

% echo $path
/sbin /bin /usr/sbin /usr/bin /usr/games /usr/local/sbin /usr/local/bin $HOME/bin

と設定されており、~/binにパスが通っていない状態になる。

これは、MateのTerminalの設定で「ログインシェルとしてコマンドを実行する」にチェックを入れても解決しない。

したがって、現時点では~/.cshrcの3行についてコメントをとって、

# These are normally set through /etc/login.conf.  You may override them here
# if wanted.
set path = (/sbin /bin /usr/sbin /usr/bin /usr/games /usr/local/sbin /usr/local/bin $HOME/bin)
setenv        BLOCKSIZE       K
# A righteous umask
umask 22

のようにして使用するのが便利だと思う。