Was überschreibt einen Alias, der durch eine Datei in /etc/profile.d erstellt wurde? (Umgebungsvariablen)

Was überschreibt einen Alias, der durch eine Datei in /etc/profile.d erstellt wurde? (Umgebungsvariablen)

Ich habe den folgenden Befehl ausgeführt, um eine Aliasdatei in CentOS 7.9 zu erstellen:

echo 'alias ll="ls -alhF --color=auto"' > /etc/profile.d/alias-ll.sh

Als ich dann die Shell neu startete, zeigte „type ll“ an, dass dieser Alias ​​nicht funktionierte. Ich dachte, das könnte daran liegen, dass eine andere Datei in /etc/profile.d den Alias ​​überschrieben hatte, also benannte ich die Datei in „z-alias-ll.sh“ um. Dann startete ich die Shell neu und dieses Mal zeigte „type ll“ an, dass der Alias ​​erfolgreich funktioniert hatte.

Wenn ich jedoch dasselbe in Ubuntu 20.04 mache, zeigt „type ll“ an, dass es nicht funktioniert. Es gab einige Dateinamen wie „Z99-cloud-locale-test.sh“ und „Z99-cloudinit-warnings.sh“ in /etc/profile.d in Ubuntu, also habe ich Folgendes ausprobiert:

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

Wenn ich das Terminal jedoch neu starte, wird bei „type ll“ immer noch angezeigt, dass „ll dem Alias ​​‚ls -alF‘ zugeordnet ist“.

Wenn ich eine weitere Aliasdatei erstelle:

echo 'alias lltest="ls -alhF --color=auto"' > /etc/profile.d/alias-lltest.sh

Nachdem ich das Terminal neu gestartet habe, zeigt „type lltest“ an, dass diese Datei als Quelle verwendet wird. Ich denke also, dass die Aliasdateien in /etc/profile.d als Quelle verwendet werden, aber der Alias ​​für „ll“ wird irgendwo überschrieben.

Da ich versucht habe, „ZZ99“ usw. als Präfix hinzuzufügen, glaube ich nicht, dass es sich um ein Problem mit der Zeichenfolgensortierung handelt, wie bei CentOS 7.9, wo ich dem Dateinamen das Präfix „z-“ hinzufügen musste, um zu verhindern, dass eine andere /etc/profile.d-Datei Vorrang erhält. Ich bin mir jedoch nicht 100 % sicher.

Welche Datei, welches Skript usw. hat möglicherweise Vorrang vor den Aliasdateien, die ich in /etc/profile.d erstellt habe? Was hat in Ubuntu im Hinblick auf die Definition von Umgebungsvariablen Vorrang vor /etc/profile.d?

Ich habe es sowohl auf Ubuntu 20.04 als auch auf Ubuntu 22.10 mit neuen Digital Ocean-Droplets versucht.

Antwort1

Im Allgemeinen haben Benutzereinstellungen Vorrang vor systemweiten Einstellungen. Dies gilt auch für Aliase. Benutzerdefinierte Aliase haben Vorrang vor Aliasen, die auf Systemebene definiert sind. Unter Ubuntu alias ll='ls -alF'wird standardmäßig in der Datei des Benutzers definiert .bashrcund überschreibt somit alle Aliase, die Sie möglicherweise anderswo festgelegt haben.

verwandte Informationen