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 erhalten?
environment-variables
path
Gilles
quelle
quelle
.bashrc
ist der Hauptort dafür..bash_profile
etwas enthält[[ -f ~/.bashrc ]] && . ~/.bashrc
.Antworten:
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
in deiner
.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
.bash_profile
(${HOME}/.bash_profile
) oder.bash_login
stattdessen verwenden.Hinweis: Wenn eine dieser Dateien vorhanden ist und Ihre Anmeldeshell bash ist,
.profile
wird sie beim Anmelden über ssh oder auf einer Textkonsole nicht gelesen. Sie wird jedoch möglicherweise weiterhin gelesen, anstatt sich über.bash_profile
die GUI anzumelden. Wenn dies nicht der Fall ist.bash_profile
, verwenden Sie.bashrc
.Wenn Sie zsh als Anmeldeshell festgelegt haben, verwenden Sie
~/.zprofile
anstelle von~/.profile
.Wenn Sie tcsh verwenden, fügen Sie hinzu
in
.login
file (${HOME}/.login
)Wenn Sie eine andere Shell verwenden, lesen Sie im Shell-Handbuch nach, wie Umgebungsvariablen definiert werden und welche Dateien beim Starten der Shell ausgeführt werden.
quelle
su user
ist, den Besitz der aktuellen Shell in den Benutzernamen arg zu ändern, während das Ausgangsverzeichnis und die Umgebung des aufrufenden Benutzers beibehalten werden. Um eine Shell so aufzurufen, dass sie der neue Benutzer wird und alle Umgebungseinstellungen ($ PATH, $ HOME, $ ABC usw.) erhält, müssen Sie als erstes Argument an su ein - übergeben.su - username
wird das erreichen, wonach du fragst.man su
)su
das überhaupt gemacht? Haben Sie nicht gerade ein Root-Verzeichnis erstellt.profile
, das vom Benutzer nicht verwendet werden kann?.profile
von allen Bourne-kompatiblen Shells gelesen wird, sollten Sie in diese Datei keine Bash-Syntax schreiben. Insbesondereexport VARIABLE=value
muss überarbeitet werdenVARIABLE=value; export VARIABLE
.Verwenden Sie die
/etc/environment
Datei zum Festlegen der Umgebungsvariablen. Fügen Sie dann die folgende Zeile in die/etc/environment
Datei ein.Jetzt kann von allen Benutzersitzungen auf die ABC- Variable zugegriffen werden. Um die Variablenausgabe zu testen, aktualisieren Sie zuerst die Umgebungsvariable mit dem Befehl
und renne
echo $ABC
.quelle
/etc/environment
dies nicht die vollständige Bash-Syntax unterstützt, was ich auf die harte Tour herausgefunden habe. Zum Beispiel funktioniert das SetzenPATH="/usr/bin:/usr/sbin"
und AusführenPATH="$PATH:/foo/bar"
einer folgenden Zeile nicht/etc/environment
neu starten, nachdem ich dies eingestellt hatte , selbst wenn ich das Bash-Terminal neu gestartet oder etwas eingegeben hattesource /etc/environment
. Wenn Sie also Probleme haben, bei denen die Umgebungsvariable nicht aufrechterhalten wird, versuchen Sie einen Neustart.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 anmeldet:
Dann müssen Sie herausfinden, welche Punktedateien diese Shell normalerweise lesen würde:
Eine Verknüpfung, die funktionieren könnte, besteht darin, die Punktedateien aufzulisten, die den Shell-Namen enthalten:
Wenn Sie überprüfen möchten, ob eine der Dateien beim Anmelden tatsächlich gelesen wurde, können Sie einfach den Dateinamen in jeder Datei ausdrucken. Beispiel:
Wenn Sie sich anmelden, sollten Sie sehen, welche Dateien gelesen werden, und Sie können entscheiden, welche Sie ändern möchten. Beachten Sie, dass Sie nicht versuchen sollten , Dot-Files
echo "$0"
oder ähnliches zu verwenden, da der Wert von$0
davon abhängt, wie die Shell Dot-Files verarbeitet, und irreführend sein kann.Beachten Sie beim Deklarieren der Variablen "permanent", dass dies nur für die Sitzung gilt. Es gibt keine Möglichkeit, auf den Wert einer Variablen ohne Sitzung zuzugreifen, daher hat sie keine Bedeutung außerhalb einer Sitzung. Wenn Sie "schreibgeschützt" meinen, ist dies von der Shell abhängig. In Bash können Sie Folgendes verwenden:
wenn es bereits einen Wert hat, oder
gleichzeitig zuweisen. Nicht alle Shells verfügen über diese Funktion.
Um eine Variable in den meisten Shells zu deklarieren, sollten Sie einen Variablennamen (
[A-Za-z_][A-Za-z0-9_]*
), gefolgt von einem Gleichheitszeichen (und keinen Leerzeichen um das Gleichheitszeichen) und einem Wert (vorzugsweise in Anführungszeichen gesetzt, sofern der Wert nicht einfach ist[A-Za-z0-9_]+
) verwenden. Zum Beispiel:quelle
Verwenden Sie den Export.
Um zu überprüfen, ob es eingestellt ist, verwenden Sie
und / oder
Um es dauerhaft hinzuzufügen, fügen Sie es Ihrer
~/.bashrc
Datei hinzu.quelle
permenate
und nichtpermenently
: Dbashrc
permenate
? meinst dupermanent
?Der genaue Befehl lautet:
quelle
~/.profile
und (b) lässt vorher und nachher Platz=
?Das Beste, was für mich funktioniert hat, ist das Ändern der .bashrc-Datei in der BASH-Shell.
Verwenden Sie dies zum Beispiel:
füge diese Zeile hinzu:
z.B :
export HOME = "/home/user/"
Denken Sie daran,
""
als zu verwenden,' '
wird nicht funktionieren und Ihre bashrc-Datei wird Fehler beim Sourcing melden.Quell es in der aktuellen Sitzung.
Ich habe auch versucht, die Datei / etc / environment zu ändern, konnte jedoch keine neue Umgebungsvariable erstellen. Als ich sie bezogen habe, wurde der Fehler gemeldet, dass die definierte Variable nicht gefunden wurde.
quelle