Ubuntu 16.04では、次のコードを追加しました/etc/bash.bashrc
。
alias ll="ls -la --group-directories-first"
その後、再起動します。
/etc/bash.bashrc
注:1つのファイルにすべてのエイリアスが必要で、すべてのユーザーが使用できるため、これを使用しています。
私の意図は、「基本」エイリアスをオーバーライドすることですll
。ただし、ディレクトリとファイルを含むディレクトリに移動して実行すると、ll
リストが表示されます。いいえディレクトリはファイルの上にソートされます。つまり。
私は何が間違っていましたか?
ベストアンサー1
エイリアスはll
defaultで定義されています.bashrc
。
エイリアス定義はコマンドです。 Bashは、コマンドを順番に実行するコマンド型言語です。同じ別名の定義が複数ある場合、シェルが定義の1つを実行するたびに別名が上書きされます。したがって、最後の定義が勝ちます。
Bashが起動したら、まずシステムファイルを読み、次に/etc/bash.bashrc
ユーザーファイルを読みます~/.bashrc
。したがって、の定義は~/.bashrc
の同じエイリアス定義をオーバーライドします/etc/bash.bashrc
。 .NET/etc/bash.bashrc
で上書きを防ぐために何もできません~/.bashrc
。
ユーザーに便利なエイリアスを与えることは意味がありません。これがinではなくinでll
定義された理由です。したがって、優先定義をシステムファイルに配置するのではなく、ユーザーファイルに配置します。~/.bashrc
/etc/bash.bashrc
デフォルト値を変更できます.bashrc
。つまり、/etc/skel/.bashrc
このファイルは、ユーザーアカウントの作成時にユーザーのホームディレクトリにコピーされます。ファイルを変更しても、/etc/skel
既存のアカウントには影響しません。しかし、これもあなたが定義するのは個人的な好みなので、良い考えではありません。