最近は定型的な作業はfunctionを事前に作っておいてそれを使うようにしているのだけど、たまにwatchコマンドとかで実行させたいときに引っかかることがある。

悲しいことだけど、watchコマンドなどではfunctionやenvは読み込んでくれない(PythonとかからSubprocessなどで呼び出す場合でも同様だろう)。 なので、以下のように無理やり実行する方法を使っている。

watch "bash -c 'source ~/.bashrc 2>/dev/null; function ...'"

これでfunctionをwatchコマンド内でも実行できるようにできる。

ちなみに、個人的にRustで自作してるwatchコマンド(hwatch)を使う場合でも同じ方法で処理している。

せめてhwatch側では何か対処方法無いかなと思ったりもしているけど、あまり思いつかない。 なにかいい方法が無いだろうか…。