条件つき alias
extags を ctags に alias するといった、元々存在するコマンドに alias するということは、頻繁とはいかなくともぼちぼちある。vim と vi とか。
こんなとき .bashrc をいくつかのマシンで共有していると、 "ctags がある状態で ctags を extags の alias にしているのだけど、マシン B だけは extags がない" みたいなことがある。マシン B の状態で ctags を実行しようとすると、存在しない extags を実行しようとして command not found となる。
こんなときは hostname で alias するかどうかを切りかえるか、extags が有効なコマンドの場合だけ alias するかの手段が手取り早い。
以下はその後者の例。bash でしか試してないので bash ってことで。
#!/usr/bin/env bash conditioned_alias() { # 引数チェック if [ -z "$1" -o -z "$2" ] then exit 1 fi # 第二引数が有効なコマンドかどうかチェック if [ -x "`which $2`" ] then if [ -n "$3" ] then alias "$1"="$3" else alias "$1"="$2" fi fi } conditioned_alias vi vim conditioned_alias ctags exctags conditioned_alias mount_foo mount_foo.sh 'sudo mount_foo.sh'
3 つ目の引数がある場合には、"第 2 引数が有効なコマンドの場合だけ、第 1 引数を第 3 引数の alias にする" という動作になる。
まぁ、extags とか vim って打てよって話なのだけど。