フォルダに入ったときに一時的なbashエイリアスを設定する

フォルダに入ったときに一時的なbashエイリアスを設定する

時には、フォルダに入るときに非常にカスタマイズされたbashエイリアスとキーバインディングを使用するのが好きです(おそらくCLIで多くのコマンドを入力するのに慣れているプロジェクトの場合)。

「projectAlpha/」などのフォルダを入力するときに、次のカスタムエイリアスが必要であるとします。

  • alias doTaskX='./app arg1 arg2...|filter arg1 arg2...'
  • ...

私が考えたのはそれだけではありませんでした。

  • エイリアスと一般的に使用されるコマンドを示す便利なメッセージを表示します。
  • 私のプロジェクトのいくつかの一般的なカスタムキーバインディングを示しています。

ただし、プロジェクトのルートを離れるとすぐに、これらの設定は使用できなくなります。

今日の最良のアプローチは何ですか?

ベストアンサー1

PROMPT_COMMANDBashには、毎回コンテンツが実行される特別な変数があります。後ろにコマンドが実行されるので、次のように設定できます。

PROMPT_COMMAND='[[ "$PWD" = /tmp ]] && { alias ll=ls; echo "Remember: ll=ls"; } || { unalias ll 2>/dev/null; }'

これ以降、/tmpディレクトリに入るたびにエイリアスが作成され、他のすべてのディレクトリから削除されます。ll


おそらくより実用的なのは、1つの関数(たとえば)からすべてのエイリアスと他の項目を収集し、必要に応じて実行できる他の関数makealiasからすべての非エイリアスを収集することです。makeunalias

PROMPT_COMMAND='[[ "$PWD" = /tmp ]] && makealias || makeunalias 2>/dev/null'

この場合、無駄な警告を防ぐためにのみstderrリダイレクトが存在します。

おすすめ記事