Powershell: Ändern von Umgebungsvariablen (z. B. $env:PSModulePath) unter Linux

Erstellt am 25. Juli 2017  ·  3Kommentare  ·  Quelle: PowerShell/PowerShell

Hallo zusammen,

Ich denke, es wäre großartig, wenn Sie unter Linux Umgebungsvariablen ändern können (auf die beispielsweise über $env:Name oder Get-ChildItem env: zugegriffen wird).

Zum Beispiel um dort Werte zu setzen eine neue Konfigurationsdatei in /etc ?

Unter Windows kann ich beispielsweise PSModulePath ändern und einen benutzerdefinierten Pfad hinzufügen. Die einzige Option unter Linux besteht darin, eine Profil-PS1-Datei für alle Benutzer zu erstellen.

Dankeschön.

Issue-Discussion Issue-Enhancement WG-Engine-Providers

Hilfreichster Kommentar

Kann ich vorschlagen, dass Sie den Titel Ihres Problems ändern, um der Tatsache Rechnung zu tragen, dass Sie nach PowerShell suchen, um eine _profilunabhängige_ Möglichkeit zum _beständigen_ Definieren von Umgebungsvariablen einzuführen?

Ein paar Gedanken:

  • Umgebungsvariablen sind per Definition _shell/application-agnostic_ und werden von _allen_ Nachkommensprozessen gesehen, unabhängig davon, von welcher Shell/Anwendung sie erstellt wurden.

  • PowerShell "hört" nur auf _2_ Umgebungsvariablen, wobei $env:PSModulePath eine davon ist.

  • Soweit ich weiß, haben Linux-Umgebungen (alle?) bereits die Datei /etc/environment als systemweiten, Shell-unabhängigen Mechanismus zum Definieren von Umgebungsvariablen.

  • Das heißt, wenn ein Satz von Umgebungsvariablen wirklich nur von _PowerShell_ verwendet wird, dann ist das systemweite _PowerShell_-Profil - $profile.AllUsersAllHosts - wohl der richtige _ist_ der richtige Ort, um sie zu definieren.

    • Diese Lösung würde auch für macOS funktionieren, das keinen systemweiten Mechanismus zum Definieren von Umgebungsvariablen (mehr) hat.
    • (macOS hat /etc/profile , die von der Standard-Shell verarbeitet werden sollen, was (a) nicht für GUI-Anwendungen wirksam wird und (b) erfordert, dass die Standard-Shell diese Erwartung erfüllt und (c) erfordert die Standard-Shell, um die POSIX-Shell-Syntax zu verstehen (die PowerShell, wenn sie als Standard-Shell definiert wäre, nicht [_Update_: /etc/profile und ~/.profile jetzt _ehrenswert wäre, wenn Sie mit pwsh -l oder verwenden Sie PowerShell als Standard-Shell]).

Alle 3 Kommentare

Kann ich vorschlagen, dass Sie den Titel Ihres Problems ändern, um der Tatsache Rechnung zu tragen, dass Sie nach PowerShell suchen, um eine _profilunabhängige_ Möglichkeit zum _beständigen_ Definieren von Umgebungsvariablen einzuführen?

Ein paar Gedanken:

  • Umgebungsvariablen sind per Definition _shell/application-agnostic_ und werden von _allen_ Nachkommensprozessen gesehen, unabhängig davon, von welcher Shell/Anwendung sie erstellt wurden.

  • PowerShell "hört" nur auf _2_ Umgebungsvariablen, wobei $env:PSModulePath eine davon ist.

  • Soweit ich weiß, haben Linux-Umgebungen (alle?) bereits die Datei /etc/environment als systemweiten, Shell-unabhängigen Mechanismus zum Definieren von Umgebungsvariablen.

  • Das heißt, wenn ein Satz von Umgebungsvariablen wirklich nur von _PowerShell_ verwendet wird, dann ist das systemweite _PowerShell_-Profil - $profile.AllUsersAllHosts - wohl der richtige _ist_ der richtige Ort, um sie zu definieren.

    • Diese Lösung würde auch für macOS funktionieren, das keinen systemweiten Mechanismus zum Definieren von Umgebungsvariablen (mehr) hat.
    • (macOS hat /etc/profile , die von der Standard-Shell verarbeitet werden sollen, was (a) nicht für GUI-Anwendungen wirksam wird und (b) erfordert, dass die Standard-Shell diese Erwartung erfüllt und (c) erfordert die Standard-Shell, um die POSIX-Shell-Syntax zu verstehen (die PowerShell, wenn sie als Standard-Shell definiert wäre, nicht [_Update_: /etc/profile und ~/.profile jetzt _ehrenswert wäre, wenn Sie mit pwsh -l oder verwenden Sie PowerShell als Standard-Shell]).

Ich habe versucht, eine Umgebungsvariable wie diese auf einem Ubuntu-Computer festzulegen:
Ich hatte gehofft, dass dies die Datei /etc/environment bearbeiten würde, um die Umgebungsvariable systemweit festzulegen.

Leider muss .NET Core noch eine Methode zum Festlegen von Umgebungsvariablen in Unix-Systemen implementieren. Die Dokumentation für diese Methoden besagt, dass das Anwenden von Werten auf alles andere als den aktuellen Prozess nur unter Windows unterstützt wird. :stirnrunzeln_gesicht:

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen