[Mac][Keyboard Maestro] シェルスクリプトを実行すると command not found となる

Terminal で実行できるのに、Keyboard Maestro のシェルスクリプトで実行すると command not found と表示されてエラーとなることがある(シェススクリプトファイルで実行しても変わらない)。

これはパスを通していないことが原因らしい。その解決方法が分かったので、コマンドラインの Twitter クライアントである Tw を使う場合を例に取ってみる。

(1)以下のコマンドで Tw の実行ファイルの場所を確認する。

$ which -a tw

すると以下のように出てくる。

/usr/local/bin/tw

(2)検索パスを確認する。

$ echo $PATH

すると以下のように表示された(今回は VMware Fusion の Mac で実行している)。

/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Applications/VMware Fusion.app/Contents/Public

これはコンマで区切られており、先ほどの Tw までのパス(/usr/local/bin/)も含まれていることが分かった。

(2)Keyboard Maestro の Execute Shell Script アクションの先頭に以下を書き込む。

export PATH=/usr/local/bin:$PATH;

これでエラーが出なくなるはずだ。

あるいは、Keyboard Maestro > Preferences > Variables に ENV_PATH という変数を追加。変数の中身は2の検索パス(/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Applications/VMware Fusion.app/Contents/Public)を書き込む。

この方法でもエラーが出なくなった。

参考:
初心者向け:command not foundを解決する方法 – Qiita
https://qiita.com/iwaseasahi/items/6e00883ccd0864ede17e

Path to excutables in shell scripts – Questions & Suggestions – Keyboard Maestro Discourse
https://forum.keyboardmaestro.com/t/path-to-excutables-in-shell-scripts/1203/4

KM can’t find shell commands – Questions & Suggestions – Keyboard Maestro Discourse
https://forum.keyboardmaestro.com/t/km-cant-find-shell-commands/5430/4

sudoした時にcommand not found が出るときの対処法 – teru_0x01.log
https://cha-shu00.hatenablog.com/entry/2017/03/02/123659