本当は怖いHPC

HPC屋の趣味&実益ブログ

zshrcでコマンドの存在を判定する方法

たぶん、もっと良い方法があるので、こういう釣り記事を書くと誰かが教えてくれるはず。

例えば,.zshrcの中で,

xset -b off

をするとします。しかし、zshrcをリポジトリとかに入れて共通管理する場合,Xが動いていないサーバー等にログインした場合に盛大にエラーメッセージが出現してしまいます.

これを避けるには,

  • 環境依存のコマンドを .zshlocal 等に退避して,共通スクリプトから呼び出すようにする
  • コマンドの存在をチェックする

という方法があって,後者で書いています.

具体的には、

if [ -x "`which xset 2>/dev/null`" ]; then
  ...
fi

という感じ・・・。まぁ実際は関数にするにしても、どうも不器用ですね. whichの挙動が,シェルの組み込みコマンドの場合とlinuxコマンドの場合で微妙に違うのがまたアレ。

【広告】