Powershell: Modifier les variables d'environnement (par exemple $env:PSModulePath) sous Linux

Créé le 25 juil. 2017  ·  3Commentaires  ·  Source: PowerShell/PowerShell

Salut tout le monde,

Je pense que ce serait formidable si vous pouviez modifier les variables d'environnement (accessibles par exemple par $env:Name ou Get-ChildItem env:) sur Linux.

Par exemple pour y définir les valeurs d'un nouveau fichier de configuration dans /etc ?

Sous Windows, je peux modifier par exemple PSModulePath et ajouter un chemin personnalisé. La seule option sous Linux est de créer un fichier de profil ps1 pour tous les utilisateurs.

Merci.

Issue-Discussion Issue-Enhancement WG-Engine-Providers

Commentaire le plus utile

Puis-je vous suggérer de modifier le titre de votre problème pour refléter le fait que vous recherchez PowerShell pour introduire une manière _indépendante du profil_ de définir _de manière persistante_ les variables d'environnement ?

Quelques réflexions :

  • Les variables d'environnement sont par définition _shell/application-agnostic_ et sont vues par _tous_ les processus descendants, quel que soit le shell/l'application qui les a créées.

  • PowerShell "écoute" uniquement _2_ variables d'environnement, $env:PSModulePath étant l'une d'entre elles.

  • D'après ce que je comprends, les environnements Linux (tous ?) ont déjà le fichier /etc/environment tant que mécanisme indépendant du shell à l'échelle du système pour définir les variables d'environnement.

  • Cela dit, si un ensemble de variables d'environnement n'est vraiment utilisé que par _PowerShell_, alors le profil _PowerShell_ à l'échelle du système - $profile.AllUsersAllHosts - est sans doute le bon endroit pour les définir.

    • Cette solution fonctionnerait également pour macOS, qui n'a plus de mécanisme à l'échelle du système pour définir les variables d'environnement.
    • (macOS a /etc/profile , que le shell par défaut est censé traiter, ce qui (a) ne prend pas effet pour les applications GUI, et (b) nécessite que le shell par défaut honore cette attente et (c) nécessite le shell par défaut pour comprendre la syntaxe POSIX-shell (quel PowerShell, s'il était défini comme shell par défaut, ne serait pas [_Update_: /etc/profile et ~/.profile maintenant _sont_ honorés si vous commencez avec pwsh -l ou utilisez PowerShell comme shell par défaut]).

Tous les 3 commentaires

Puis-je vous suggérer de modifier le titre de votre problème pour refléter le fait que vous recherchez PowerShell pour introduire une manière _indépendante du profil_ de définir _de manière persistante_ les variables d'environnement ?

Quelques réflexions :

  • Les variables d'environnement sont par définition _shell/application-agnostic_ et sont vues par _tous_ les processus descendants, quel que soit le shell/l'application qui les a créées.

  • PowerShell "écoute" uniquement _2_ variables d'environnement, $env:PSModulePath étant l'une d'entre elles.

  • D'après ce que je comprends, les environnements Linux (tous ?) ont déjà le fichier /etc/environment tant que mécanisme indépendant du shell à l'échelle du système pour définir les variables d'environnement.

  • Cela dit, si un ensemble de variables d'environnement n'est vraiment utilisé que par _PowerShell_, alors le profil _PowerShell_ à l'échelle du système - $profile.AllUsersAllHosts - est sans doute le bon endroit pour les définir.

    • Cette solution fonctionnerait également pour macOS, qui n'a plus de mécanisme à l'échelle du système pour définir les variables d'environnement.
    • (macOS a /etc/profile , que le shell par défaut est censé traiter, ce qui (a) ne prend pas effet pour les applications GUI, et (b) nécessite que le shell par défaut honore cette attente et (c) nécessite le shell par défaut pour comprendre la syntaxe POSIX-shell (quel PowerShell, s'il était défini comme shell par défaut, ne serait pas [_Update_: /etc/profile et ~/.profile maintenant _sont_ honorés si vous commencez avec pwsh -l ou utilisez PowerShell comme shell par défaut]).

J'ai essayé de définir une variable d'environnement comme celle-ci sur une machine Ubuntu :
J'espérais que cela modifierait le fichier /etc/environment pour définir la variable d'environnement à l'échelle du système.

Malheureusement, .NET Core n'a pas encore implémenté de méthode pour définir les variables d'environnement dans les systèmes Unix. La documentation de ces méthodes indique que l'application de valeurs à autre chose que le processus en cours n'est prise en charge que sous Windows. :frowing_face:

Cette page vous a été utile?
0 / 5 - 0 notes