it-swarm.com.de

Wie stelle ich die Umgebungsvariable für alle unter meinem Linux-System ein?

Kann ich bestimmte Einstellungen vornehmen, die für alle meine Benutzer gelten?

120
TIMEX

Neben /etc/profile, Das andere erwähnt haben, verwenden einige Linux-Systeme jetzt ein Verzeichnis /etc/profile.d/; Alle darin enthaltenen .sh - Dateien werden von /etc/profile bezogen. Es ist etwas sinnvoller, Ihre benutzerdefinierten Umgebungsdaten in diesen Dateien zu belassen, als nur /etc/profile Zu bearbeiten.

96
Kieron

Mann 8 pam_env

man 5 pam_env.conf

Wenn alle Anmeldedienste PAM verwenden und alle Anmeldedienste session required pam_env.so In ihren jeweiligen /etc/pam.d/* - Konfigurationsdateien haben, dann melden Sie sich alle an Bei Sitzungen werden einige Umgebungsvariablen wie in der Konfigurationsdatei von pam_env angegeben festgelegt.

Bei den meisten modernen Linux-Distributionen ist dies standardmäßig alles - fügen Sie einfach Ihre gewünschten globalen Umgebungsvariablen zu /etc/security/pam_env.conf Hinzu.

Dies funktioniert unabhängig von der Shell des Benutzers und auch für grafische Anmeldungen (wenn xdm/kdm/gdm/entrance /… so eingerichtet ist).

39
ephemient

Wenn Ihr LinuxOS diese Datei hat:

/etc/environment

Sie können damit Umgebungsvariablen für alle Benutzer dauerhaft festlegen.

Auszug aus: http://www.sysadmit.com/2016/04/linux-variables-de-entorno-permanentes.html

39
tulipcomp1

Erstaunlicherweise haben Unix und Linux nicht die Möglichkeit, globale Umgebungsvariablen festzulegen. Das Beste, was Sie tun können, ist, für eine bestimmte Shell eine standortspezifische Initialisierung zu veranlassen.

Wenn Sie es in /etc/profile Eingeben, erledigt dies die meisten posix-kompatiblen Shell-Benutzer. Dies ist wahrscheinlich "gut genug" für unkritische Zwecke.

Aber jeder mit einer csh oder tcsh Shell wird es nicht sehen, und ich glaube nicht, dass csh eine globale Initialisierungsdatei hat.

16
DigitalRoss

Einige interessante Auszüge aus der Bash-Manpage:

Wenn bash als interaktive Anmeldeshell oder als nicht interaktive Shell mit der Option --login Aufgerufen wird, werden zuerst Befehle aus der Datei /etc/profile Gelesen und ausgeführt, sofern diese Datei vorhanden ist. Nach dem Lesen dieser Datei wird in dieser Reihenfolge nach ~/.bash_profile, ~/.bash_login Und ~/.profile Gesucht und es werden Befehle von der ersten Datei gelesen und ausgeführt, die vorhanden und lesbar ist. Die Option --noprofile Kann verwendet werden, wenn die Shell gestartet wird, um dieses Verhalten zu unterbinden.
...
Wenn eine interaktive Shell gestartet wird, die keine Anmeldeshell ist, liest bash Befehle von /etc/bash.bashrc Und ~/.bashrc Und führt sie aus, sofern diese Dateien vorhanden sind. Dies kann mit der Option --norc Verhindert werden. Die Dateioption --rcfile Erzwingt das Lesen und Ausführen von Befehlen aus der Datei anstelle von /etc/bash.bashrc Und ~/.bashrc.

Schauen Sie sich also /etc/profile Oder /etc/bash.bashrc An, diese Dateien sind die richtigen Orte für globale Einstellungen. Fügen Sie so etwas ein, um eine Umgebungsvariable einzurichten:

export MY_VAR=xxx
7
Pascal Thivent

Die Verwendung von PAM ist sehr gut.

# modify the display PAM
$ cat /etc/security/pam_env.conf 
# BEFORE: $ export DISPLAY=:0.0 && python /var/tmp/myproject/click.py &
# AFTER : $ python $abc/click.py &
DISPLAY  DEFAULT=${REMOTEHOST}:0.0 OVERRIDE=${DISPLAY}
abc   DEFAULT=/var/tmp/myproject
4
YumYumYum

Jeder unter dem Linux-Kernel ausgeführte Prozess erhält eine eigene, eindeutige Umgebung, die er von seinem übergeordneten System erbt. In diesem Fall ist das übergeordnete Element entweder eine Shell (die eine untergeordnete Shell erzeugt) oder das Anmeldeprogramm (auf einem typischen System).

Da die Umgebung jedes Prozesses geschützt ist, gibt es keine Möglichkeit, jedem ausgeführten Prozess eine Umgebungsvariable zuzuweisen. Selbst wenn Sie die Standard-Shell-RC/-Profile ändern, wird sie erst wirksam, wenn jeder Prozess beendet und neu geladen wird seine Starteinstellungen.

Suchen Sie in/etc /, um die Standardstartvariablen für eine bestimmte Shell zu ändern. Denken Sie nur daran, dass Benutzer sie in ihren individuellen Einstellungen ändern können (und dies häufig tun).

Unix ist so konzipiert, dass es dem Benutzer in Grenzen gehorcht.

[~ # ~] nb [~ # ~] : Bash ist nicht nur Shell auf Ihrem System. Achten Sie genau darauf, auf was der symbolische Link/bin/sh tatsächlich verweist. Auf vielen Systemen kann dies tatsächlich ein Bindestrich sein (standardmäßig ohne speziellen Aufruf). POSIXLY richtig. Daher sollten Sie darauf achten, beide Standardeinstellungen zu ändern, da Skripte, die mit/bin/sh beginnen, Ihre globalen Standardeinstellungen nicht übernehmen. Vermeiden Sie in ähnlicher Weise die Syntax, die nur bash versteht, wenn Sie beide bearbeiten, auch bekannt als avoiding bashisms.

2
Tim Post