最新

meta‘s blog

2009-04-10 bash-4.0 on FreeBSD

グローバルな bashrc を読み込むようにするパッチ

対象環境は FreeBSD 7.1-RELEASE / bash-4.0 です。

多くの Linux ディストリビューションでは、ログインシェル以外でも初期化ファイル /etc/bash.bashrc が読み込まれるようになっていますが、FreeBSDでは読み込むようにはなっていません。

そこでログインシェル以外でも /etc/bash.bashrc を読み込むようにするパッチを作成しました。

--- config-top.h.orig   2009-01-05 04:32:23.000000000 +0900
+++ config-top.h        2009-04-10 18:31:17.000000000 +0900
@@ -75,10 +75,10 @@
 #define KSH_COMPATIBLE_SELECT

 /* System-wide .bashrc file for interactive shells. */
-/* #define SYS_BASHRC "/etc/bash.bashrc" */
+#define SYS_BASHRC "/etc/bash.bashrc"

 /* System-wide .bash_logout for login shells. */
-/* #define SYS_BASH_LOGOUT "/etc/bash.bash_logout" */
+#define SYS_BASH_LOGOUT "/etc/bash.bash_logout"

 /* Define this to make non-interactive shells begun with argv[0][0] == '-'
    run the startup files when not in posix mode. */

上のパッチを /usr/ports/shells/bash/files/patch-syswide-bashrc として保存します。

そして、普通に make install するだけです。

# cd /usr/ports/shells/bash
# make deinstall
# make install

これで、ログインシェル以外の bash でも /etc/bash.bashrc が起動時に読み込まれるようになります。

ただし、portsnap や portupgrade を実行した際にパッチの当たっていない bash がインストールされる可能性がありますが、ここでは触れません。

ちなみに、/etc/bash.bashrc には以下のように記述しました。

# /etc/bash.bashrc
[ -f /etc/profile ] && . /etc/profile