異なる動作をするために、デプロイメント依存の 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既存のアカウントには影響しません。しかし、これもあなたが定義するのは個人的な好みなので、良い考えではありません。

答え2

/etc/bash.bashrcすべてのユーザーが利用可能

~/.bashrcホームフォルダを持つユーザーにのみ適用されます。

llしたがって、でエイリアスを変更し/etc/bash.bashrcて実行すると、で定義されたエイリアスがの定義よりも優先されるため、で定義されたllエイリアスの出力が得られます。~/.bashrc~/.bashrc/etc/bash.bashrc

簡単に言うと。新しいのエイリアスですが、/etc/bash.bashrc上書きするにはを変更してください~/.bashrc

編集する:

すべてを1つのファイルに含めるには、すべてのユーザーのすべてのエイリアスおよび/~/.bashrc ~/.bash_profileまたは~/.profileすべてのユーザーのファイルからすべてのエイリアスを削除し、このファイルにすべてのエイリアスを追加すると、/etc/bash.bashrc問題なくグローバルエイリアス構成が生成されます。

編集2:

新しいユーザーが作成されたときにデフォルトのエイリアスが設定されないように、デフォルト設定を/etc/skel/.bashrc作成、編集、コピーします。.bashrc

編集提案をありがとう@user4556274に感謝します。

答え3

/etc/bash.bashrc私はこれが問題ではないと確信しています。あなたが探しているファイルは$HOME/.bash_profileOR$HOME/.profileまたはあなたが使用できるものですが、これがあなたが達成したいものに適したファイルだと$HOME/.bashrc思います。profile

.bash_profileとの違いについては、.bashrc以下を参照してください。http://www.joshstaiger.org/archives/2005/07/bash_profile_vs.html

sourceに.profile以下.bash_profileを追加します.bash_profile

if [ -f ~/.profile ]; then
  . ~/.profile
fi

別の潜在的なオプションは、代わりに関数を置くことですll。私は、関数が同じ名前を持つすべてのエイリアスセットよりも優先されると思います。function/etc/bash.bashrcalias

ll () {

  ls -la --group-directories-first

}

関連情報