異なる動作をするために、デプロイメント依存の Bash エイリアスをオーバーライドします。

異なる動作をするために、デプロイメント依存の Bash エイリアスをオーバーライドします。

Ubuntu 16.04では、次のコードを追加しました/etc/bash.bashrc

alias ll="ls -la --group-directories-first"

その後、再起動します。

/etc/bash.bashrc注:1つのファイルにすべてのエイリアスが必要で、すべてのユーザーが使用できるため、これを使用しています。


私の意図は、「基本」エイリアスをオーバーライドすることですll。ただし、ディレクトリとファイルを含むディレクトリに移動して実行すると、llリストが表示されます。いいえディレクトリはファイルの上にソートされます。つまり。

私は何が間違っていましたか?

ベストアンサー1

エイリアスはlldefaultで定義されています.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既存のアカウントには影響しません。しかし、これもあなたが定義するのは個人的な好みなので、良い考えではありません。

おすすめ記事