すべてのbashコマンドの後にスクリプトを呼び出す方法


22

この例hey.shで、bashコマンドごとに名前が付けられたスクリプトを呼び出すことはできますか?

たとえば、lsヒットEnter キーを押してlsを実行すると、hey.sh実行されます。

次にcd .. (または他のコマンド)入力し、cdを実行してからhey.sh実行します。


2
これは、XYの問題か、非常に奇妙なアイデアです。実際に何を達成しようとしていますか?
-jasonwryan

多分bash.rcのエイリアス?
moonbutt74

回答:


29
PROMPT_COMMAND+="hey.sh;"

PROMPT_COMMAND設定されている場合、値は各プライマリプロンプトを発行する前にコマンドとして実行されます。


注:環境変数とシェル変数

デフォルトでは、PROMPT_COMMANDあるない環境変数。これは単なるシェル変数です

両方のタイプの変数は同じ方法でアクセスされます("$variable*")が、環境変数は子プロセスに継承されますが、シェル変数は継承されません。

慣例では、環境変数 +シェルを構成するシェル変数を大文字にします(PROMPT_COMMANDはシェルを構成します)が、他のタイプの変数は小文字のままにします。

ではbashの、あなたが行うことができます:declare -p変数をエクスポート(=環境変数である)されているかどうかを調べるために:

$ declare -p PATH
declare -x PATH=... #-x means it's exported
$ declare PROMPT_COMMAND
declare -- PROMPT_COMMAND=... #no -x so just a shell variable

2
@ジョンいいえexport。設定するだけです(または、上記のように追加します)。
PSkocik

きちんとしましたが、その後はどうですか?
moonbutt74

2
@ moonbutt74すべてのコマンドの前==すべてのコマンドの後+ bashセッションの開始
-PSkocik

@PSkocik私はそれが既に環境変数であるかどうかを知りたいと思いました、クイックエコーコマンドで私はそれがわかった。これはまさに私が探していたものです
ジョン

@Johnデフォルトでは、環境変数ではなく単なるシェル変数です。
PSkocik
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.