CentOS 7.9 でエイリアス ファイルを作成するために、次のコマンドを実行しました。
echo 'alias ll="ls -alhF --color=auto"' > /etc/profile.d/alias-ll.sh
その後、シェルを再起動すると、「type ll」は、このエイリアスが機能していないことを示しました。これは、/etc/profile.d 内の別のファイルがエイリアスを上書きしたためである可能性があると考え、ファイルの名前を「z-alias-ll.sh」に変更しました。その後、シェルを再起動すると、今度は「type ll」はエイリアスが正常に機能したことを示しました。
しかし、Ubuntu 20.04で同じことを行うと、「type ll」は機能しないことを示します。Ubuntuの/etc/profile.dには「Z99-cloud-locale-test.sh」や「Z99-cloudinit-warnings.sh」などのファイル名がいくつかあったので、これらを試しました。
echo 'alias ll="ls -alhF --color=auto"' > /etc/profile.d/Z99-alias-ll.sh
echo 'alias ll="ls -alhF --color=auto"' > /etc/profile.d/ZZ99-alias-ll.sh
echo 'alias ll="ls -alhF --color=auto"' > /etc/profile.d/Z99-z-alias-ll.sh
echo 'alias ll="ls -alhF --color=auto"' > /etc/profile.d/ZZ99-z-alias-ll.sh
echo 'alias ll="ls -alhF --color=auto"' > /etc/profile.d/Z99Zalias-ll.sh
しかし、ターミナルを再起動すると、「type ll」は依然として「ll は `ls -alF' にエイリアスされています」と表示されます。
別のエイリアスファイルを作成する場合:
echo 'alias lltest="ls -alhF --color=auto"' > /etc/profile.d/alias-lltest.sh
その後、ターミナルを再起動すると、「type lltest」は、このファイルがソース化されていることを示します。したがって、/etc/profile.d 内のエイリアス ファイルはソース化されていると思いますが、「ll」のエイリアスはどこかで上書きされています。
「ZZ99」などのプレフィックスを付けてみたので、別の /etc/profile.d ファイルが優先されるのを防ぐためにファイル名に「z-」プレフィックスを追加する必要があった CentOS 7.9 のような文字列ソートの問題ではないと思います。ただし、100% 確信はありません。
/etc/profile.d に作成したエイリアス ファイルよりも優先されるファイルやスクリプトなどは何でしょうか? 環境変数の定義に関して、Ubuntu では /etc/profile.d よりも優先されるものは何でしょうか?
新しい Digital Ocean ドロップレットを使用して、Ubuntu 20.04 と Ubuntu 22.10 の両方で試しました。
答え1
一般的に、ユーザー設定はシステム全体の設定よりも優先されます。これはエイリアスにも当てはまります。ユーザー定義のエイリアスは、システム レベルで定義されたエイリアスよりも優先されます。Ubuntu のデフォルトでは、はalias ll='ls -alF'
ユーザーの.bashrc
ファイルで定義されるため、他の場所で設定したエイリアスは上書きされます。