it-swarm.com.de

Wie setze ich eine Benutzerumgebungsvariable? (permanent, keine Sitzung)

Das irritiert mich. Ich habe mehrere Vorschläge gesehen (alle mit unterschiedlichen Dateien und Syntax) und keiner von ihnen hat funktioniert.

Wie lege ich eine Umgebungsvariable für einen bestimmten Benutzer fest? Ich bin auf Debian Squeeze. Was ist die genaue Syntax, die ich in die Datei einfügen sollte, um ABC = "123" zu machen?

148
user4069

Sie müssen die Deklaration in die Initialisierungsdateien Ihrer Shell einfügen:

  • Wenn Sie Bash, Ash, Ksh oder eine andere Bourne-Shell verwenden, können Sie hinzufügen

    ABC="123"; export ABC
    

    in Ihrer .profile Datei (${HOME}/.profile). Dies ist die Standardsituation bei den meisten Unix-Installationen und insbesondere bei Debian.

    Wenn Ihre Login-Shell bash ist, können Sie stattdessen .bash_profile (${HOME}/.bash_profile) Oder .bash_login Verwenden.

    Hinweis : Wenn eine dieser Dateien vorhanden ist und Ihre Login-Shell bash ist, wird .profile Nicht gelesen, wenn Sie sich über ssh oder auf einer Textkonsole anmelden, aber es wird möglicherweise trotzdem gelesen von .bash_profile, wenn Sie sich über die GUI anmelden. Wenn es kein .bash_profile Gibt, verwenden Sie .bashrc.

  • Wenn Sie zsh als Login-Shell festgelegt haben, verwenden Sie ~/.zprofile Anstelle von ~/.profile.

  • Wenn Sie tcsh verwenden, fügen Sie hinzu

    setenv ABC "123"
    

    in der Datei .login (${HOME}/.login)

  • wenn Sie eine andere Shell verwenden, lesen Sie im Shell-Handbuch nach, wie Umgebungsvariablen definiert werden und welche Dateien beim Shell-Start ausgeführt werden.

118
Matteo

Verwenden /etc/environment Datei zum Einstellen der Umgebungsvariablen. Fügen Sie dann die folgende Zeile in das /etc/environment Datei.

ABC="123"

Jetzt kann von allen Benutzersitzungen aus auf die Variable ABC zugegriffen werden. Um die Variablenausgabe zu testen, aktualisieren Sie zuerst die Umgebungsvariable mit dem Befehl

source /etc/environment

und Renn echo $ABC.

49
Hokam

Dies ist eine allgemeine Prozedur, die Sie für so ziemlich jede Shell verwenden können. In jedem Fall müssen Sie wissen, mit welcher Shell sich der Benutzer normalerweise anmelden würde:

path="$(grep $USER /etc/passwd | cut -d ':' -f 7)"
Shell="$(basename -- "$path")"

Dann müssen Sie herausfinden, welche Punktdateien diese Shell normalerweise lesen würde:

man $Shell

Eine Verknüpfung, die möglicherweise funktioniert, besteht darin, die Punktdateien aufzulisten, die den Shell-Namen enthalten:

ls ~/.*${Shell}*

Wenn Sie überprüfen möchten, ob eine der Dateien während der Anmeldung tatsächlich gelesen wird, können Sie einfach den Dateinamen in jeder Datei ausdrucken, zum Beispiel:

echo .bashrc

Wenn Sie sich anmelden, sollten Sie sehen, welche Dateien gelesen werden, und Sie können entscheiden, welche geändert werden soll. Beachten Sie, dass Sie nicht versuchen sollten, echo "$0" Oder ähnliches zu verwenden, da der Wert von $0 Davon abhängt, wie die Shell Punktdateien verarbeitet, und irreführend sein kann.

Wenn Sie die Variable "permanent" deklarieren, beachten Sie, dass dies nur für die Sitzung gilt. Es gibt keine Möglichkeit, ohne eine Sitzung auf den Wert einer Variablen zuzugreifen, daher hat sie außerhalb einer Sitzung keine Bedeutung. Wenn Sie "schreibgeschützt" meinen, ist dies Shell-abhängig, und in Bash können Sie Folgendes verwenden:

declare -r VAR

wenn es bereits einen Wert hat, oder

declare -r VAR=value

gleichzeitig zuweisen. Nicht alle Muscheln haben diese Funktion.

Um eine Variable in den meisten Shells zu deklarieren, sollten Sie einen Variablennamen ([A-Za-z_][A-Za-z0-9_]*) Verwenden, gefolgt von einem Gleichheitszeichen (und keine Leerzeichen . um das Gleichheitszeichen), dann ein Wert (vorzugsweise in Anführungszeichen, es sei denn, der Wert ist einfach [A-Za-z0-9_]+). Zum Beispiel:

name="John Doe"
ip=127.0.0.1
HORRIBLE=1
9
l0b0

Verwenden Sie den Export.

export ABC="123"

Verwenden Sie, um zu überprüfen, ob es eingestellt ist

env

und/oder

env | grep ABC

Um es dauerhaft hinzuzufügen, fügen Sie dies Ihrem ~/.bashrc Datei.

export ABC="123"
5
whoami

Der genaue Befehl lautet:

echo 'export ABC = "123"' >> ~/.profile

Der beste Weg, der für mich funktioniert hat, ist das Ändern der .bashrc-Datei in der BASH-Shell.

verwenden Sie dies zum Beispiel:

  1. öffnen Sie Ihre .bashrc-Datei
  2. füge diese Zeile hinzu:

    export <VARIABLE> = "<ANY PATH/VALUE you want>"
    

    z.B : export HOME = "/home/user/"

    Denken Sie daran, "" wie mit ' ' funktioniert nicht und Ihre bashrc-Datei meldet Fehler beim Sourcing.

  3. quelle es in der aktuellen Sitzung.

Ich habe auch versucht, die Datei/etc/environment zu ändern, konnte jedoch keine neue Umgebungsvariable erstellen. Bei der Beschaffung wurde der Fehler angezeigt, dass die definierte Variable nicht gefunden wurde.

1
Ayushi Agarwal