«前の日記(2009-02-26) 最新 次の日記(2009-04-30)» 編集

meta's blog - The Power To Serve

筆者について

FreeBSDを通じてOSSにささかな貢献を。

OSS活動をご支援いただける方を募集しています


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
本日のツッコミ(全3件) [ツッコミを入れる]
Σ Noppi (2009-04-10 19:23)

時代は zsh ですよ。

Σ meta (2009-04-16 06:46)

zsh の実力は分かってるんですが、先立つものがというか初期設定の敷居が高そうというか…。<br>bash + bash_completion で不自由ないんですよねー。

Σ Noppi@FreeBSD (2009-04-16 20:17)

同じくです。<br>…っていうか、私の場合は tcsh でも困ってない…。<br>デスクトップ環境がメインですしねー。