Cygwin関係のメモ


セットアップ前の環境変数の設定

下のように設定:

CYGWIN=error_start:C:\cygwin64\bin\gdb.exe winsymlinks:native
HOME=C:\cygwin64\home\%USERNAME%
LD_LIBRARY_PATH=C:\cygwin64\lib;C:\cygwin64\usr\local\lib

何でライブラリのパスまで書いてるんだっけ?…忘れた…(汗

二重引用符で囲っていないので,空白文字がどこかに含まれる場合は付けておいた方がよいかもしれない.

%USERNAME%と書いてある部分は,各々の環境に合わせて変更すること.
USERNAME変数を定義しない,つまりデフォルトにしてWindowsに任せると,時々,期待に反する値が設定される場合があり,それが原因で誤動作を招く場合がある.
USERNAME変数を定義するなど,ハードコードした方が良いかもしれない.

本来は必要無いだろうと思うが:

CYGWIN_ROOT=C:\cygwin64

という風に変数を定義しておくと,Windows側でこの情報を使いたい時に便利かもしれない.

参考情報

setup-x86_64.exeの実行

実行してインストール.特に言うことは無いだろう.

apt-cyg (またはcyg-fast)のインストール

Cygwinのパッケージマネージャは,通常はsetup-x86_64.exeだが,apt-cygはCygwinのターミナルから使用できるCygwinのパッケージマネージャツール.

詳しい歴史は知らないが,このツールはいくつかforkがあり,cyg-fastはそのうちの一つらしい.
真偽は確かめていないが,ここによると,cyg-fastは署名検証を行っていないかもしれない.

参考情報

シェルやエディタの設定

.vimrcの編集

Emacsも使いますが,Cygwinではvimをよく使うので,まずはvimをインストールして.vimrcここからコピペ.

.bash_profileの編集

diffの結果を貼り付けようかと思ったけれども,長いので概要だけ.
コメントアウトされているPATHMANPATHINFOPATHの設定を有効にする.

そして,ちょっとした遊びとして, 次のコマンドを最後に置く:

 [ `which fortune` ] && fortune

.bashrcの編集

下にコメントアウトを外して有効にした設定を挙げる:

set -o ignoreeof
[[ -f /etc/bash_completion ]] && . /etc/bash_completion
export HISTIGNORE=$'[ \t]*:&:[fb]g:exit:ls' # Ignore the ls command as well
alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
alias df='df -h'
alias du='du -h'
alias less='less -r'                          # raw control characters
alias grep='grep --color'                     # show differences in colour
alias ls='ls -hF --color=tty'                 # classify files in colour
alias ll='ls -l'                              # long list
alias la='ls -A'                              # all but . and ..
alias l='ls -CF'                              #

.ssh/configの編集

.ssh/config
Host *
    Compression yes
    CompressionLevel 9
    ServerAliveInterval 60

Cygwin (Windows)では,ControlMasterをサポートしないようなので設定していません.

.tmux.confの編集

.tmux.conf
bind ^C new-window -n bash -c "#{pane_current_path}"
bind c new-window -n bash -c "#{pane_current_path}"
bind '"' split-window -c "#{pane_current_path}"
bind % split-window -h -c "#{pane_current_path}"

set-window-option -g mode-keys vi

tmuxは,負荷がかかるとデッドロックしたかのように動作しなくなってしまうようなので,使わない方がよいかもしれない.

References

[experimental] alternativesを使ってコマンドを配置する

インストールは:

$ cyg-fast install alternatives

これで終わり.特に苦労することは無かった…
他の色々なパッケージをインストールしていると,既にインストールされている可能性が高い.

Javaを設定してみる:

$ /usr/sbin/alternatives.exe --install /usr/local/bin/java java /cygdrive/c/Program\ Files/Java/jdk1.8.0_40/bin/java.exe 10
$ alias java='java -Dfile.encoding=UTF-8'
$ /usr/sbin/alternatives.exe --install /usr/local/bin/javac javac /cygdrive/c/Program\ Files/Java/jdk1.8.0_40/bin/javac.exe 10
$ alias javac='javac -J-Dfile.encoding=UTF-8'

こんな感じ.

まぁ,設置はできたけど使う時に何が起きるかは未検証.
注意点としては,例えば,上のようなデモでは$(realpath $(which java))とやると空白が入るので,二重引用符で囲う必要がある("$(realpath $(which java))"),とかかな.