zsh(または他のシェル)でディレクトリ区切りエイリアスを定義できますか?

zsh(または他のシェル)でディレクトリ区切りエイリアスを定義できますか?

現在の作業ディレクトリによって異なるエイリアスを使用したい(または異なる名前を持つ同じエイリアス)。たとえば、lいくつかの追加オプションに省略形を使用したい場合があります。ls2つのバリエーションを使いたいです。

alias l="ls --sort=extension" # variant A
alias l="ls --quoting-style=literal" # variant B

一般的にバリアントAを使いたいです。しかし、画像を一覧表示するときにバリアントBを使用したいと思います。つまり、作業ディレクトリが~/pictures.(これは最小限の例にすぎません。実際のユースケースはより複雑です)。

l()の出力で大文字と小文字を区別する関数を簡単に作成できることがわかります$(pwd)。ただし、エイリアスを変更せずに特定のディレクトリの名前を変更できる、より強力なソリューションが必要です.zshrc。 (そしてこれは問題を引き起こしません。)

しかし、可能ですか?書くまたは次へ追加.zshrcエイリアス(例:vimやlocalと同様に、関連ディレクトリにlocalを設定する.vimrc)?

また、bashや他のシェルでも可能ですか?

ベストアンサー1

使用する場合ああ、、ただアクティブにするdotenv入れる:

plugins+=(dotenv)
ZSH_DOTENV_FILE=.any-name-you-like-for-the-per-directory-alias-file

また考慮ディレンフ、各ディレクトリの環境変数をエクスポートできます.envrcそして出発時にキャンセルしてください(不可能dotenv)。 direnvは、広く使用されているすべてのシェルと互換性があります。しかしそうではありませんエイリアスまたは関数を定義できます。

まだ組み合わせることができますIrkachoの方法direnvを使用すると、direnvで設定された1つ以上の環境変数に基づいて実行するアクションを決定する関数(エイリアスではなく)を生成できます。

どちらの方法も、ドットファイルを含むディレクトリを手動でホワイトリストに追加してセキュリティ上の問題を処理します。

おすすめ記事