[Prev][Next][Index]

標準の設定ファイルをコピーし直すには



[Q]
.cshrc や .emacs.el など、シェルやアプリケーションの挙動を制御する 標準の設定ファイルをコピーし直すには、どうすればよいですか。

[A]
FreeBSD では、新規にユーザーを登録した際、 /usr/share/skel 以下にあるファイルをホームディレクトリにコピーします。
ただし、/usr/share/skel 以下には、dot.cshrc のように、dot がファイル名の最初に付いていて、 それを取り除いて、/usr/share/skel/dot.cshrc -> $HOME/.cshrc のようにコピーします。
標準の設定ファイルは、OS やアプリケーションのバージョンを上げた場合には更新しますので、 古いユーザーは古い設定ファイルのままで、新しいソフトウェアを使う状態になって、 そのためにうまく動かない場合が出てきます。

以上のルールを理解して、/usr/share/skel 以下の設定ファイルと、 自分のホームディレクトリの設定ファイルの違いをみて、 必要であれば新しい設定ファイルをコピーすれば良いのですが、 手動で行なうのが面倒な場合には、半自動でその操作をおこなってくれるシェルスクリプトを作りました。 それがskelcopy.sh (/usr/local/bin/skelcopy.sh) です。

% skelcopy.sh -h
copy from /usr/share/skel to /home/xxxx
 Usage: skelcopy.sh [ -h -f ]
 -h: display this help.
 -f: overwrite all file
 -v: verbose diff output of two files
 -u user: copy to user's home (root only)

% skelcopy.sh
/home/xxxx/.cshrc already exists.
-rw-r--r-- 1 root wheel 767 2 27 2007 /usr/share/skel/dot.cshrc
-rw-r--r-- 1 xxxx users 2966 3 11 19:52 /home/xxxx/.cshrc
Overwrite(y/n)?

というように、両者で違いがあるファイルのついては、上書きするかどうかを尋ねてきます。
y リターンで、以前のファイルは末尾に .old を付加した名前に mv して、 /usr/share/skel 以下の設定ファイルをコピーします。

skelcopy.sh -v と -v オプションをつけると、 ふたつのファイルの違い(diff -u) を表示しますので、 それを見て判断することも出来ます。