(O+P)ut

アウトプット



(O+P)ut

エンジニアのアウトプット

【Cygwin】ホームディレクトリの変更方法メモ

スポンサーリンク

やりたいこと

Cygwinのターミナル(C:\cygwin64\bin\mintty.exe)を開いた際のホームディレクトリを修正したい。

環境情報
$ bash --version
GNU bash, バージョン 4.4.12(3)-release (x86_64-unknown-cygwin)

やり方

/etc/nsswitch.confのdb_homeの値をCygwinから見たパスにて変更する。

以下のように変更した場合は/home/usernameではなく/home/username/Documentsがホームディレクトリとなります。

$ diff /etc/nsswitch.conf /etc/nsswitch_ori.conf
11c11
< db_home:  /home/%U/Documents
---
> # db_home:  /home/%U
$

以下、補足です。

補足

Linuxではusermodコマンドでホームディレクトリを変更しますがCygwinにはありません。
であればUNIXではHOMEという環境変数にカレントディレクトリが格納されているので

$ echo $HOME
/home/xx/

この変数を.bash_profileにて再設定する案が浮かびます。が、それではログイン時に読み込まれるのみで自らホームディレクトリに移動する必要があります。

というわけで上で述べた/etc/配下のnsswitch.confの

$ cat /etc/nsswitch.conf
# /etc/nsswitch.conf
#
#    This file is read once by the first process in a Cygwin process tree.
#    To pick up changes, restart all Cygwin processes.  For a description
#    see https://cygwin.com/cygwin-ug-net/ntsec.html#ntsec-mapping-nsswitch
#
# Defaults:
# passwd:   files db
# group:    files db
# db_enum:  cache builtin
# db_home:  /home/%U
# db_shell: /bin/bash
# db_gecos: <empty>

db_homeを変更すればログイン時にホームディレクトリの設定が変わります。

注意点として、もともとCygwinの初回起動時に動的に生成された以下のファイルは移行されないので、手動で新たなホームディレクトリに配置する必要があります。

.bash_profile  
.bashrc  
.inputrc  
.profile  

以上、ご参考になれば幸いです。