Akata Works

東京エンジニア。主にRuby,Go,たまにAWSとiOS。ゲーム音楽が好きです。連絡はTwitterかakata.onen@gmail.comまで

CygwinでZshを使う

最近、Windows側の操作は専らCygwinを使っています。

僕の基本ツールの中でもTmuxとVim,Gitはもう入れていたのですが、Zshはまだ入れていなかったので、ササッと入れるつもりで挑んでみました。

パッケージ管理ツールとしてapt-cygコマンドが入っていれば、以下のコマンドでインストールできます。

$ apt-cyg install zsh

何事もなく導入が終わりました。

早速、ログインシェルに設定しようとchshコマンドを叩いてみると・・

$ chsh -l
bash: chsh: コマンドが見つかりません

な、なんだと・・

まあ、これはあるある問題みたいで"/etc/passwd"ファイルを直接編集したらいいとのこと(そらそうか)

しかし、

$ ls /etc/passwd
ls: /etc/passwd にアクセスできません: No such file or directory

何故か存在しない"/etc/passwd"ファイルorz

なんでだろう、セットアップのときにJust Meにしたからだろうか・・

ファイルがない原因は調べてないので分かりませんが、生成する方法はあるらしく、以下のコマンドで無事に生成されました。

$ mkpasswd > /etc/passwd

よかったよかった。

しかし、ログインしたユーザが辿り着いた先は、何故か"/cygdrive/c/Windows/system32/"ディレクトリであった・・

ホームディレクトリの設定は変えていないのに・・そしてBashに戻すと何事もなかったようにホームディレクトリに辿り着く。

結局、めんどうくさくなっちゃって、下記を"/etc/zprofile"ファイルに記述して暫定対応しちゃったんだけど、ログインのときにホームディレクトリに移動する仕組が分かれば解決はできそうですね(ログインシェルで"/etc/passwd"ファイルに書かれたパスに移動しているのだろうか・・)

# For Cygwin.
if [ "$( uname -o )" = 'Cygwin' ]; then
  # Is not changed home directory for some reason, when login shell is Zsh.
  cd
fi

参考URL

DY - Re: No etc/passwd (was) Re: (everything!) command not found