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


13

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

"projectAlpha /"のようなフォルダに入ると、次のようなカスタムエイリアスが期待できます。

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

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

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

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

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


...、〜/ .bashrcの中で「CD」のために一つのディレクトリに入力する一つのエイリアスを1つの別名を使用するようになりましたここの思考を来て、そのディレクトリに隠しの.bashrcを読み込む新しいbashのを開始
gzinho

回答:


14

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

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


ty、試してみます。+1(アップできた場合)
gzinho

1
@ user3697611自分の質問に対する答えを受け入れるのに評判は必要ありません。答えの横にあるチェックマークをクリックします。
バーマー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.