Cygwin なんでも掲示板

一覧最新記事過去一覧 | 検索FAQアンテナHOME
(新規投稿・発言はできません)

No.3286  Re:インストールした後
発言者:
発言日: 2007 01/16 21:46
 
あんまり適当なことを鵜呑みにしたり書いたりしちゃダメです。

一般的な Unix システムでは、ユーザの $HOME のドットファイルは
adduser/useradd などのコマンドがユーザの追加、ホームディレクトリの
作成の後に /etc/skel/ 以下にあるファイルをコピーしてきます。

しかし Cygwin では、ユーザの追加は Windows 側で管理されるので、
対話シェルを最初に起動したときに、ユーザのホームディレクトリが
存在しない場合に限って、ディレクトリの作成と /etc/skel/ 以下の
ファイルのコピーが行われます。
この動きは /etc/profile に書いてあります。

base-files パッケージ version 3.7-1 の /etc/profile から該当部分の
コメントを引用すると、

# IF THIS FILE IS MODIFIED IT WILL NOT BE UPDATED BY THE CYGWIN
# SETUP PROGRAM. IT BECOMES YOUR RESPONSIBILITY.

とありますので、システムに /etc/profile が存在し、管理者によって
変更されていれば、Cygwin のセットアップによって上書きされることは
ないので、/etc/profile がある状態で base-files をインストールまたは
アップデートすると、上記の動作は保証されません。
(システムの管理者による記述内容が優先されるので)
この場合でも、base-files パッケージのデフォルトは /etc/defaults/etc/profile
にあるので、必要に応じてコピーすればよいでしょう。

さらに、$HOME を作成し、/etc/skel/ 以下のファイルをコピーする
手前のコメントでは、

# Here is how HOME is set, in order of priority, when starting from Windows
# 1) From existing HOME in the Windows environment, translated to a Posix path
# 2) from /etc/passwd, if there is an entry with a non empty directory field
# 3) from HOMEDRIVE/HOMEPATH
# 4) / (root)

とありますので、Windows の環境変数として HOME を定義しており、
かつそのディレクトリが存在すれば、ディレクトリの作成とドットファイルの
コピーは行われません。また、/etc/passwd にホームディレクトリが設定されて
いなければ、3) にあるように Windows の HOMEDRIVE/HOMEPATH が使われる
(通常、これは HOMEDRIVE=C HOMEPATH=\Documents and Settinges\<ログオンユーザ名>)
ので、常にディレクトリが存在し、ドットファイルのコピーは行われません。

上記のことから、「ドットファイルが自動的に作成されないのですが」という
疑問については、/etc/passwd をきちんと作っていないか、Windows の環境変数で
HOME を定義している、もしくはなにも設定していないためでしょう、
という回答になります。

じゃあどうするの、という点については、動作と理由については上記で網羅してあるので、
自分で考えてください。


▼関連発言

3282:インストールした後 [saint] 01/12
 ├3284:Re:インストールした後 [ワム] 01/15
 └3286:Re:インストールした後 [な] 01/16 <

Pass 保存

早田のホームページへ
CGIROOM