zshrcでコマンドの存在を判定する方法
たぶん、もっと良い方法があるので、こういう釣り記事を書くと誰かが教えてくれるはず。
例えば,.zshrcの中で,
xset -b off
をするとします。しかし、zshrcをリポジトリとかに入れて共通管理する場合,Xが動いていないサーバー等にログインした場合に盛大にエラーメッセージが出現してしまいます.
これを避けるには,
- 環境依存のコマンドを .zshlocal 等に退避して,共通スクリプトから呼び出すようにする
- コマンドの存在をチェックする
という方法があって,後者で書いています.
具体的には、
if [ -x "`which xset 2>/dev/null`" ]; then ... fi
という感じ・・・。まぁ実際は関数にするにしても、どうも不器用ですね. whichの挙動が,シェルの組み込みコマンドの場合とlinuxコマンドの場合で微妙に違うのがまたアレ。