TerminalでCygwinを使う
CygwinはTeratermとかPuttyとかから使うと透明化できたり,便利な感じがします.
このポストでは,便利感をより高める2つの方法を説明します.
前提として,TeratermからCygwin起動は既にできているとします.
また,zshなどのインストール方法については省きます.
やること
デフォルトシェルをzshにする
Cygwinにはchshとかないんで,設定ファイルに直接記述します.
Cygwinをそのまま使ってる場合はCygwin.batを編集するようですが,
Teraterm越しに使っている場合はcygterm.cfgを編集します.
設定ファイルの中身は
[sourcecode language="bash"] # CygTerm setting TERM = ttermpro.exe %s %d /E /KR=SJIS /KT=SJIS /VTICON=CygTerm /nossh TERM_TYPE = vt100 PORT_START = 20000 PORT_RANGE = 40 SHELL = auto ENV_1 = MAKE_MODE=unix ENV_2 = LOGIN_SHELL = Yes # HOME_CHDIR = No SSH_AGENT_PROXY = No [/sourcecode]
こんな感じになっているので,SHELLを
SHELL=/bin/zsh
に書き換えるだけok.
ついでに,cygtermの文字コードをUTFにするためにTERMを
TERM=ttermpro.exe %s %d /E /KR=UTF-8 /KT=UTF-8 /VTICON=CygTerm /nossh
と書き換えましょう
この設定は,teratermの設定 > その他の設定 > Cygwin からでも設定できます.
apt-cyg導入
cygwinにはapt-getとかyumなどのパッケージ管理が用意されておらず
setup.exeを起動してパッケージを追加しなければなりません.
そこで,まるでapt-getを使っているかのような錯覚に陥るapt-cygを導入します(cyg-aptってのもあるらしいですけど).
apt-cygを見ると
% svn --force export http://apt-cyg.googlecode.com/svn/trunk/ /bin/ % chmod +x /bin/apt-cyg
でokなよう. apt-getとの対応としては
apt-cashe serach apt-cyg find apt-get installapt-cyg installです.
*** fatal error - unable to remapとかいうエラー
cygwinを使っていると,dllのアドレスが衝突してる的なエラーがたまに出ます.
zshを使ってるとよく出るきがします. いろいろメモさんに載っていた方法でうまく解決します.
/bin/rebaseallというスクリプトを使います.(dllを再配置するようです.)
zshでそのまま使うと,from ashとエラーが出るので,一旦cygwinを閉じ,ashを起動します.(Cygwin/bin/ash.exe)
念の為/bin/psでプロセスを確認し,ashとps以外のものがあればkillしてから /bin/rebaseall を実行すればokです.