[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