Die Antwort auf Ihre spezifische Frage lautet, dass oft nur /etc/bash.bashrc
(oder /etc/bashrc
) geladen wird.
Es scheint eine Reihe von Möglichkeiten zu geben, dieses Problem anzugehen, die meisten sind leider Problemumgehungen. In keiner bestimmten Reihenfolge:
Fake ein Login
Anmeldungen werden ausgeführt /etc/profile
und oft können Sie Ihre benutzerdefinierten Skripts einfügen/etc/profile.d/*.sh
Wickeln Sie es in ein Bash-Login
Manchmal ist es am einfachsten, einen Login auszulösen, dh
echo "do whatever $PATH $BASH $PS1 $0"
wird
bash -lc 'echo "do whatever $PATH $BASH $PS1 $0"'
Laden Sie das Profil manuell
Tun Sie, was Anmeldungen tun, laden Sie das Profil manuell
source /etc/profile;echo "do whatever $PATH $BASH $PS1 $0"
Bearbeiten Sie globale Umgebungsvariablen
Für einfache Variablen, die Sie hinzufügen können, /etc/environment
um Ubuntu System-wide_environment_variables anzuzeigen, ist die Variablenerweiterung nicht funktionsfähig
THING_HOME="/opt/thing" PATH="$PATH:/opt/thing" # this will NOT work
Für PATH könnte man es zB hinzufügen sudo sed -i 's#PATH=\"[^\"]*#&:/opt/thing#' /etc/environment
Bearbeiten Sie alle Bash-Shells
Sie können zu /etc/bash.bashrc
(oder /etc/bashrc
) hinzufügen, dies wird jedoch normalerweise vorzeitig beendet, wenn Sie nicht interaktiv sind. Daher müssen Sie Ihre Ergänzungen vorher hacken:
# If not running interactively, don't do anything [ -z "$PS1" ] && return
Mach nichts davon
- Betrachten Sie Symlinks, wenn Sie versuchen, dem PATH etwas hinzuzufügen
- Erwägen Sie, dass Ihre Programme / Skripts ihre eigene Umgebung ändern
- Systemd hat
EnvironmentFile
undEnvironment
zBsystemctl edit --full cron.service
Ich bin daran interessiert zu hören, ob jemand andere bessere Problemumgehungen hat!