私のシェル(Oh My Zsh)でエイリアスをどのようにオーバーライドしますか?

私のシェル(Oh My Zsh)でエイリアスをどのようにオーバーライドしますか?

lsコマンドにエイリアスを追加したいのですが、以前に定義されたエイリアスがあり、定義する前に最初に呼び出されるようです。私は.zshrcを使ってエイリアスを定義します。これが私がすることです:

alias ls="ls --classify --almost-all --group-directories-first"

以下はaliasコマンドの出力です。

$ alias | grep "ls="
ls='ls --color=tty'

別のエイリアスが定義されている場所を確認することができるタスクはありますか?それとも新しいもので上書きしますか?

注:私はZSHを使用しており、.profileや役に立つ可能性がある他の関連ファイルでそれを検索しました。確認する必要があるファイルがあればコメントしてください。

ベストアンサー1

このaliasコマンドは、同じ名前の古いエイリアスを上書きします。したがって、一般に、エイリアスがzshフレームワークで定義したエイリアスを上書きするようにするには、あなたの終わりに置く.zshrc。関数定義、変数の割り当て、キーバインディングなどの他の機能の場合も同様です。一般的に言えば、最新の定義が勝ちます。

「最新の定義の勝利」の極端なケースは、単に同じタイプのオブジェクトの最新の定義であるということです。特に、エイリアス、関数、および外部コマンドは異なるタイプのオブジェクトです。たとえば、同じ名前のエイリアスを定義した後に関数を定義すると、エイリアスは上書きされません。まず電話をする必要がありますunalias。 (また、foo () { … }エイリアスがfooエイリアスを拡張するときの構文に注意してください。unaliasエイリアスを最初に拡張するか、そのfunction foo { … }構文を使用する必要があります。)

時には、次のように実行時に設定を上書きできます。フック機能。たとえば、バージョン管理を支援するフレームワークは、バージョン管理ディレクトリに入ったり出たりしたときに変数とエイリアスまたは関数を変更することがよくあります。これが発生した場合は、既存のフックを修正するか、気に入らないフックの後に独自のフックを実行する必要があります。


エイリアスがどこに設定されているかわからない場合は、実行してscript -c 'zsh -x'からを入力しますexit。これにより、typescript初期化中にzshが実行するすべてのコマンドのログを含むzshというファイルが生成されます。そのファイルからalias ls=.(同様のものかもしれませんalias foo=bar ls=whatever)を検索します。

おすすめ記事