- 追加された行はこの色です。
- 削除された行はこの色です。
- Cygwin へ行く。
#contents
* アンインストール
いきなりディレクトリを削除しようとするとWindows2000が落ちた。~
以下が正解らしい。
# cron
cygrunsrv --stop cron
cygrunsrv --remove cron
# inetd
net stop inetd
/usr/sbin/inetd --remove-as-service
上に続いて
- ファイルの削除
- レジストリの削除
- 環境変数の削除
* cannot find -lpython2.3
~-L/usr/lib/python2.3/config
* cron
# -D 指定をよく見かけるけど古いオプションらしい
# cygrunsrv --install cron --path /usr/sbin/cron --args -D
cygrunsrv --install cron --path /usr/sbin/cron --args -n
cygrunsrv --start cron
** cron からネットワークドライブが見られない
cronはシステムユーザ権限。~
ネットワークドライブの割り当てはユーザごと。~
つまりネットワークドライブは cron から見られない。~
その他権限周りでもハマれる。
** cron_diagnose.sh
困ったときの診断ツール
* Apache2
# 準備
cygserver-config
export CYGWIN=server
net start cygserver
/usr/sbin/apachectl2 start
# サービスとして起動
cygrunsrv --install apache2 --disp "CYGWIN apache2" \
--path /usr/sbin/httpd2 --args -DFOREGROUND --env "CYGWIN=ntsec binmode server"
cygrunsrv --start apache2
* dd のデバイス
ls じゃ見られないけど /proc/partitions で見られる。
* 標準入力が入力できない
export CYGWIN='glob tty'
//この設定(tty?) + zshのどこかのバージョンから。~
//y/n を聞かれた途端に落とすしかなくなる。
こいつのせい
* Subversion での日本語ファイル名の扱い
LANG や LC_ALL を変えたところで扱えない。~
おとなしく Windows 版を使うこと。
* find が途中で止まる
日本語のパス次第(多分2バイト目 \ )で止まる。~
エラーも何も出ないので、日本語が含まれうる環境で find はNG。
Perl の find も同様。
- DOSコマンドによる代替
:: find -type -f 相当(-D は not directory)
dir /B/S/A-D
- Perl
# $DOSFIND は上記 DOSコマンドのラッパ bat
# @echo off 忘れずに
my @files;
foreach my $path (@ARGV) {
$path = `cygpath -w '$path'`;
chomp $path;
push(@files, split(/\n/, `$DOSFIND '$path'`));
}
* Cygwin を起動したのと同等の環境でコマンド実行
bash --login -c "cd - ; DO SOMETHING"
login を付けないと、環境変数(主にPATH)が処理されていないが、~
弊害として cd - でコマンド実行時のカレントパスに戻らないと、$HOME で実行されるとか。
** cygwin を呼ぶ bat
@echo off
for %%D in (C:\cygwin D:\cygwin E:\cygwin) do if exist %%D set CYGWIN_ROOT=%%D
SET PATH=%CYGWIN_ROOT%\bin;$PATH
* zsh で C:/ などの補完が効かない
4.3.9 だと起こる。~
4.3.4 に下げる。
4.3.11 だと C:\Windows のようなパス(の変数)の補完が1階層しかされない。~
補完に使うものだけ .zshrc などで以下のように設定しておくことで回避可能。~
(この形式を受け付けないものもあるので注意)
export HOGE=`cygpath -m $HOGE`
・・・根本治療はないのかね。
* 環境変数 USERNAME が消える
zsh は環境変数 USERNAME を消して USER をつくる。