ポイント
- コマンドの前に winpty をつければ動くようになる。例えば、
winpty docker ...
など。 - winpty を毎回つけるのは手間なため、 .bashrc などに alias を定義すると便利
私の ~/.bashrc の記述
for name in docker docker-compose
do
case "$(type -p "$name".exe 2>/dev/null)" in
''|/usr/bin/*) continue;;
esac
alias $name="winpty $name.exe"
done
コマンド解説
- case 文
case 値 in パターン1 ) 処理1 ;; パターン2 ) 処理2 ;; esac
- case 文中の
|
: OR 条件 - case 文中の
*
: ワイルドカード type -p
: 実行されるコマンドのディスク上のファイル名を表示する(例えば、ビルトインコマンドの場合は何も表示されない)2>/dev/null
: 標準エラー出力を捨てる。
補足
.bashrc の記述は、 <Git installed Directory>/etc/profile.d/aliases.sh
にある次の記述をそのままの形で使用しました。
# Some good standards, which are not used if the user
# creates his/her own .bashrc/.bash_profile
# --show-control-chars: help showing Korean or accented characters
alias ls='ls -F --color=auto --show-control-chars'
alias ll='ls -l'
case "$TERM" in
xterm*)
# The following programs are known to require a Win32 Console
# for interactive usage, therefore let's launch them through winpty
# when run inside `mintty`.
for name in node ipython php php5 psql python2.7
do
case "$(type -p "$name".exe 2>/dev/null)" in
''|/usr/bin/*) continue;;
esac
alias $name="winpty $name.exe"
done
;;
esac
おわりに
以前次の投稿をしました。
今回は、これのまとめともいえる内容となったと思います。
自分で調べてやっとたどりついた答えは、実はすでに最初からそば (インストールした Git 自身) にあった、そんなお話でした。
ちょっとした物語を感じ、少し感慨深かったです。
以上です。