web-dev-qa-db-ja.com

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

フォルダを入力すると、非常にカスタマイズされたbashエイリアスとキーバインドが必要になる場合があります(CLIから多くのコマンドを入力するために使用されるプロジェクトの場合もあります)。

「projectAlpha /」のようなフォルダに入ると、次のようなカスタムエイリアスが必要になると想定します。

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

それ以上に私は考えていました:

  • エイリアスと一般的なコマンドを示す役立つメッセージを表示する
  • プロジェクトの一般的なカスタムキーバインドを表示する

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

今日それを行うための最良のアプローチは何ですか?

13
gzinho

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

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リダイレクトは、この場合のアラートで役に立たないものを防ぐためにのみ存在することに注意してください。

14
jimmij