
echoo.sh
私はコマンドを実行する前にコマンドをエコーすることを目的としてbashスクリプトを書いています。私のソースのスクリプトです.bashrc
。しかし、私が実行している他のbashスクリプトには影響しません。これまで私のコードは次のようになります。
エコ
#!/usr/bin/env bash
shopt -s extdebug
get_hacked () {
[ -n "$COMP_LINE" ] && return # not needed for completion
[ "$BASH_COMMAND" = "$PROMPT_COMMAND" ] && return # not needed for prompt
local this_command=$BASH_COMMAND;
echo $this_command;
}
trap 'get_hacked' DEBUG
シェルを開き、コマンドを実行すると機能します。ただし、スクリプトファイル内のコンテンツには機能しません。
いくつかの追加試み:
.bashrc
テストスクリプトからファイルをインポートしようとしましたが、機能しません。echoo.sh
テストスクリプトの内部コンテンツを入手して動作しました。
だから理解しようとしています。
.bashrc
スクリプトで実行されているコンテンツに対してスクリプトソースのみを使用しても機能しないのはなぜですか?- #2が動作したら#1を試してみてはいかがですか?
echoo.sh
最後に、操作するためにすべてのスクリプトファイルのソースコードをインポートする必要がないようにするにはどうすればよいですか?スクリプトを一箇所に置き、いくつかの設定を変更してすべてのシナリオで動作させることができますか?
答え1
私はすべての試みをテストし、Archlinux、bashバージョン4.4.12で動作します。ただし、~/.bashrc
新しいシェルを取得するには、新しい対話型シェルを開く必要があります。
非対話型シェル~/.bashenvrc
のexport BASH_ENV=$(realpath ~/.bashenvrc)
場合~/.bashrc
。
~/bashenvrc
これで、非対話型シェルを起動するたびにこのスクリプトをインポートします。
私もこれをテストしました。デーモン1.7.7-1
乾杯