'entr'にローカルに定義されたシェル関数を実行させます。

'entr'にローカルに定義されたシェル関数を実行させます。

entrファイルが変更されたときにシェルコマンドを実行するために使用されます。次のスクリプトが出力されますファイルが変更されました。ファイルがあるたびに/tmp/data.txt修正されました。

#!/usr/bin/env sh

echo "/tmp/data.txt" | entr -s 'echo "File changed."'

実行するコマンドがより複雑になると、entr次のようにコマンドを別の関数に移動してその関数を呼び出すのが便利です。

#!/usr/bin/env sh

foo() { echo "File changed!"; }

echo "$0" | entr -s 'foo' # Error: command not found: foo

残念ながらこれにより命令が見つかりませんローカルに定義された関数が利用できないことを示すエラーが発生しますentr。これを行う方法はありますか?ここで根本的な問題は何ですか?

フレンドリーな安否

ベストアンサー1

できるようにしたい場合export SHELL=/bin/bashenv -s cmdcmd

文書化されたとおりマンページ(強調entr):

-s インタプリタを使用して最初の引数を評価します。SHELL環境変数で指定

/bin/bash必ずしも呼び出されたシェルやユーザーのログインシェルである必要はありません。

定義されていない場合SHELL(スクリプトなどの場合である必要はありません)、Debianでは関数を使用してエクスポートできないシェルインに自己設定され、entrさらに進む/bin/shdashbash削除する彼らは環境から来ました。

おすすめ記事