Powershell: 在 Linux 上修改环境变量(例如 $env:PSModulePath)

创建于 2017-07-25  ·  3评论  ·  资料来源: PowerShell/PowerShell

大家好,

我认为如果您可以在 Linux 上更改环境变量(例如通过 $env:Name 或 Get-ChildItem env: 访问),那就太好了。

例如,在/etc 中设置一个新的配置文件的值?

在 Windows 上,我可以更改例如 PSModulePath 并添加自定义路径。 Linux 上的唯一选择是为所有用户创建配置文件 ps1 文件。

谢谢你。

Issue-Discussion Issue-Enhancement WG-Engine-Providers

最有用的评论

我可以建议您更改问题的标题以反映您正在寻找 PowerShell 以引入 _profile-independent_ 方式来 _persistently_ 定义环境变量的事实吗?

一些想法:

  • 环境变量根据定义 _shell/application-agnostic_ 并且被 _all_ 后代进程看到,而不管它们是什么 shell/应用程序创建的。

  • PowerShell 仅“侦听” _2_ 环境变量, $env:PSModulePath就是其中之一。

  • 据我了解,Linux 环境(所有环境?)已经将文件/etc/environment作为系统范围的、独立于 shell 的机制来定义环境变量。

  • 也就是说,如果一组环境变量确实只由 _PowerShell_ 使用,那么系统范围的 _PowerShell_ 配置文件 - $profile.AllUsersAllHosts - 可以说是定义它们的正确位置。

    • 这个解决方案也适用于 macOS,它没有一个系统范围的机制来定义环境变量(不再)。
    • (macOS 有/etc/profile ,默认 shell 应该处理它,这 (a) 对 GUI 应用程序不生效,并且 (b) 需要默认 shell 来满足这个期望,并且 (c) 需要理解 POSIX-shell 语法的默认 shell(如果 PowerShell 被定义为默认 shell,则不会 [_Update_: /etc/profile~/.profile现在 _are_ 以pwsh -l开头

所有3条评论

我可以建议您更改问题的标题以反映您正在寻找 PowerShell 以引入 _profile-independent_ 方式来 _persistently_ 定义环境变量的事实吗?

一些想法:

  • 环境变量根据定义 _shell/application-agnostic_ 并且被 _all_ 后代进程看到,而不管它们是什么 shell/应用程序创建的。

  • PowerShell 仅“侦听” _2_ 环境变量, $env:PSModulePath就是其中之一。

  • 据我了解,Linux 环境(所有环境?)已经将文件/etc/environment作为系统范围的、独立于 shell 的机制来定义环境变量。

  • 也就是说,如果一组环境变量确实只由 _PowerShell_ 使用,那么系统范围的 _PowerShell_ 配置文件 - $profile.AllUsersAllHosts - 可以说是定义它们的正确位置。

    • 这个解决方案也适用于 macOS,它没有一个系统范围的机制来定义环境变量(不再)。
    • (macOS 有/etc/profile ,默认 shell 应该处理它,这 (a) 对 GUI 应用程序不生效,并且 (b) 需要默认 shell 来满足这个期望,并且 (c) 需要理解 POSIX-shell 语法的默认 shell(如果 PowerShell 被定义为默认 shell,则不会 [_Update_: /etc/profile~/.profile现在 _are_ 以pwsh -l开头

我尝试在 Ubuntu 机器上设置这样的环境变量:
我希望这会编辑 /etc/environment 文件以在系统范围内设置环境变量。

不幸的是,.NET Core 还没有实现在 Unix 系统中设置环境变量的方法。 这些方法的文档指出,仅在 Windows 上支持将值应用于当前进程以外的任何内容。 :皱眉脸:

此页面是否有帮助?
0 / 5 - 0 等级