Announce

PukiWiki contents have been moved into SONOTS Plugin (20070703)

cygwin

cygwinのメモ

Table of Contents

日本語の打ち方

Alt-半角/全角。

正確にはコマンドプロンプトでの日本語の打ち方。

インストール

とりあえず複数の .jp ドメインを選択する(Ctrlキーを押しながらクリック)。 1つだけだと、欲しいソフトが配布されていないことがある。

○ボタンのようなものを押して、All Default から All Install に変更する。 デフォルトでは gcc などがインストールされないようだ。

ホームディレクトリの変更

Windows の環境変数を設定。HOME を作成し、Windows パスを指定。

デフォルトシェルの変更

cygwin を起動する cygwin.bat で

bash --login -i

となっているので、ここを変えないといけない。

zsh --login -i

Linux のように chsh とか passwd とかのコマンドで変更するわけではない。

windows のパスに cd

最近は windows のパスをそのまま指定できるようだ。

cd 'C:\Program Files\'
vim 'C:\Program Files\hoge'

cygpath -w 'C:\Program Files\' | xargs cd

explorer を開く

cygwin ウィンドウから

explorer .

でカレントディレクトリを explorer で開ける。 #いつから windows の環境変数 PATH を cygwin でも利用してくれるようになったので、特に設定がいらなくなった。

explorer hoge/hoge

だと explorer が / を認識できないので、hoge\hoge なのだが、cygwin が \ をエスケープシーケンスと認識するので hoge\\hoge。めんどくさいので cd してから explorer . がいいだろう。

X

startx

だけでは、DISPLAY が設定されない?

alias Xinit='startx & export DISPLAY=:0.0'

と設定しておき、

Xinit

を使用している。

.bash_profile

.bash_profile を作成。

$ touch ~/.bash_profile

.bash_profile を修正

export PATH=~/usr/bin:$PATH
alias e='explorer'
alias ls='ls -F --show-control-chars'
alias emacs='/cygdrive/c/Program\ Files/ntemacs23/bin/runemacs.exe'
alias sakura='/cygdrive/c/Program\ Files/sakura/sakura.exe'
export PS1="\u@\H \w\n$ " # ntemacs の M-x shell で色エスケープシーケンスが解釈されないため

マウント

http://www.mars.dti.ne.jp/~sohda/cygwin/faq.html

:Q.6: Windows の X ドライブにアクセスしたい (X = A,B,C,...) |A.6: デフォルトでは /cygdrive/X (X はドライブ名) でアクセスできます。

ls /cygdrive/c

cygdrive と入れるのが長くて嫌だという人は、

mount --change-cygdrive-prefix /drv 

として、すべての Cygwin アプリケーション(サービスも含む)を終了させてから、

ls /drv/c

とアクセスできるようになります。今、どうやってアクセスできるか(= cygdrive prefix)は

mount -p
で、確認できます。
mount [OPTION] [<win32path> <posixpath>]
mount "D:" /d

まず普通に ls "C:\WINNT" などは可能。\ がエスケープシーケンスになってしまうので、C:/WINNT でも可能

mount -f //192.168.0.1/home/ /home

mount //192.168.0.1 だとできなかった。

NFS サーバーたててマウントももちろんできる。

mount 192.168.0.1:/home /home

のように。

シームレスX

startxwin.bat で X を起動すると少しシームレス。 中で XWin -multiwindow と -multiwindow オプションをつけているので。 bat なら普通にショートカットから起動もできるし。 .xinitrc 読み込まないです。XWin は。

日本語キーボードになっていないので、日本語キーボードのレイアウトファイルを もってきて、.Xmodmap という名前にして、

run xmodmap %HOME%\.Xmodmap

みたいな。を追加。%HOME% が cygwin の HOME と一致していれば。あれ?だめ?

kterm インストして、xterm の部分を

run kterm -sb -title kterm -geometry +300+300 -e sh -c 'cd; exec bash'

に変えると吉。

なんだかんだで、

run xwinclip &
run cannaserver
run xmodmap %HOME%\.Xmodmap
run xrdb -load %HOME%\.Xresources
run kinput2 -canna -cannafile %HOME%\.canna &

みたいな でもうまくいかないなぁ。%HOME% が。 消極的解決策

run kterm -sb -title kterm -e sh -c 'cd; xmodmap .Xmodmap; xrdb -load .Xresources; exec bash

PATH は上のほうで

SET PATH=.;%CYGWIN_ROOT%\bin;%CYGWIN_ROOT%\usr\X11R6\bin;%PATH%

となっているはず。

結局 ASTEC 使ってますが。

@echo off
SET DISPLAY=127.0.0.1:0.0
SET CYGWIN_ROOT=\cygwin
SET PATH=.;%CYGWIN_ROOT%\bin;%CYGWIN_ROOT%\usr\X11R6\bin;%PATH%
run kterm -sb -title kterm -e sh -c 'cd; exec bash'

セキュリティの項から xauth を有効にしたりするように。 「ホストアクセス制御」(xhost)のチェックをはずすとどこからでも接続できるようになってしまうので、そのままで、 「ユーザーアクセス制御」(xauth) のほうで .Xauthority 指定して xauth を使う デフォルトだと cygwin から利用できない。 さらに DISPLAY=localhost:0.0 に設定しておかないといけない。

updatedb

updatedb --prunepaths='/cygdrive /home'

ssh server

ssh-host-config

privilege separation ってやつを no にしてやった。root アクセスになるのだろう。書いてある通り

cygrunsrv -S sshd

でWindowsサービスに追加。じゃねーや。ssh-host-config が追加するから、今すぐ起動したければ、だ。 その前にLinux 的に

/etc/rc.d/init.d/sshd restart

でも試してみてエラーがでるようなら対処。lock 作成ディレクトリがないとかいわれた。

アンインストールに失敗して残ったサービスのエントリを消去したい http://www.monyo.com/technical/windows/31.html

cygwin コマンドバッチファイル

最初から入っている startx.bat などを見ればわかるはずだ。

D:\cygwin\usr\X11R6\bin\run.exe -p /usr/X11R6/bin rxvt -display 127.0.0.1:0.0 

run.exe が肝ですな。これ X 用? cygwin.bat 見りゃいいじゃん。

@echo off

D:
chdir D:\cygwin\bin

bash --login -i
bash -c "/usr/bin/ssh -l root kuro-box 'ls'"