Sie können dies einfach tun, indem Sie es in der Befehlszeile als neu deklarieren oder erneut deklarieren. Wenn Sie beispielsweise ~/testfolder
Ihre Pfadvariable hinzufügen möchten , können Sie sie einfach in Ihr aktuelles Terminal eingeben (dies ist nur ein Beispiel):
PATH="$HOME/testfolder:$PATH"
Dies ändert sich natürlich nur für die Zeit, in der Sie die Terminalsitzung geöffnet haben. Beachten Sie die $
Verwendung hier, Sie lassen sie für die Deklaration aus, aber wenn Sie sie anzeigen möchten, müssen Sie sie hinzufügen $
, um ihren Inhalt zu erweitern.
Wenn Sie sie für dauerhafter und allgemeiner erklären möchten, können Sie sie in Ihre ~/.bashrc
(nur für Sie) Datei oder in /etc/bash.bashrc
(systemweit) hinzufügen, wenn Sie möchten, dass sie nur für Sie oder für alle Benutzer zählen. Eine andere Möglichkeit besteht darin, es Ihrer .profile
Datei hinzuzufügen (nur für Sie selbst), wo es ab dem Moment Ihrer Anmeldung funktionsfähig ist. Sie können dies echo
beispielsweise tun, wenn Sie sicher sind, dass diese Variable noch nicht festgelegt ist, oder wenn Sie neue erstellen (nur ein Beispiel):
echo "variable=value" >> /path/filename
Wenn Sie jedoch eine Datei außerhalb Ihres Benutzerverzeichnisses bearbeiten möchten, was beim Bearbeiten der Fall ist, /etc/bash.bashrc
müssen sudo
Sie sie verwenden. Daher können Sie nicht einfach ein "Hier-Dokument" verwenden, da dies nicht funktionieren würde. Verwenden Sie stattdessen eine Zeile wie die folgende:
echo "variable=value" | sudo tee -a /path/filename
Wenn die Variable jedoch bereits vorhanden ist, können Sie sie mit dem sed
Befehl ändern (auch nur ein Beispiel):
sed -i.bak 's/variable=value/variable=new-value/' /path/filename
Dadurch wird die Variable in der Datei bearbeitet, aber vor der Bearbeitung wird eine Sicherungskopie erstellt. Wenn Sie Dateien außerhalb Ihres Benutzerverzeichnisses mit sed ändern, müssen Sie sudo
in den meisten Fällen Folgendes verwenden :
sudo sed -i.bak 's/variable=value/variable=new-value/' /path/filename
Das Entfernen einer Variablen aus einer Datei ist ebenfalls möglich. sed
Lassen Sie einfach den zweiten Teil des regulären Ausdrucks leer:
sed -i.bak 's/variable=value//' /path/filename
Wenn Sie interessiert sind, welche Umgebungsvariablen festgelegt sind, können Sie sie mit dem env
Befehl auflisten, ( set -o posix ; set ) | less
oder sh -c set
. Alle drei geben unterschiedliche Ausgabemengen an, ( set -o posix ; set ) | less
wobei die meisten tatsächlich gesetzten Variablen zurückgegeben werden.
( set -o posix ; set )
es einfacher zu sagensh -c set
. Dies funktioniert auch dann, wennsh
es sich um einen Symlink handeltbash
(was normalerweise bei modernen Ubuntu-Versionen nicht der Fall ist).sh -c set
zeigt nicht wirklich alle auf dem System festgelegten Umgebungsvariablen an. Ich werde es jedoch als dritte Möglichkeit aufnehmen, um einige von ihnen zu zeigen.sh -c set
Zeigt tatsächlich alle Umgebungsvariablen an . Es werden nur keine Shell- Variablen der aufrufenden Shell angezeigt, diese werden jedoch niemals von einem Prozess geerbt, den Sie von dieser Shell ausführen, es sei denn, Sie habenexport
sie./etc/environment
? Das scheint eine Abkürzung zur Verwirrung zu sein.Es gibt kein direktes Äquivalent zu
setx /m
, aber es gibt Möglichkeiten, das zu erreichen, wassetx /m
tut.setx /m
setztvariable=value
einHKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment
. Non- / m (dh pro Benutzer)setx
setzt einfach dasvariable=value
inHKCU\Environment
.Sie haben speziell nach "systemweit" gefragt. Dazu würden Sie das Variablen-Wert-Paar entweder
/etc/environment
ODER hinzufügen/etc/profile.d/<yourfile>
. Ersteres wird von pam bewertet, während letzteres von ausgewertet wird/bin/sh
. So/etc/profile.d/<yourfile>
würden Sie in hinzufügenvariable=value; export variable
. (Bash erlaubt auchexport variable=value
). Denn/etc/environment
du würdest hinzufügenvariable=value
.Die Äquivalente pro Benutzer sind
~/.pam_environment
und~/.profile
.Siehe auch: https://help.ubuntu.com/community/EnvironmentVariables
quelle
Sie können Umgebungsvariablen über die Befehlszeile exportieren, dies wirkt sich jedoch nicht auf die effektive Umgebung in bereits gestarteten Prozessen aus, sondern nur auf den aktuellen Prozess und seine Unterprozesse. In der Praxis müssen Sie sich daher häufig neu anmelden, wenn Sie Umgebungsvariablen ändern.
quelle