大家好,
我认为如果您可以在 Linux 上更改环境变量(例如通过 $env:Name 或 Get-ChildItem env: 访问),那就太好了。
例如,在/etc 中设置一个新的配置文件的值?
在 Windows 上,我可以更改例如 PSModulePath 并添加自定义路径。 Linux 上的唯一选择是为所有用户创建配置文件 ps1 文件。
谢谢你。
我可以建议您更改问题的标题以反映您正在寻找 PowerShell 以引入 _profile-independent_ 方式来 _persistently_ 定义环境变量的事实吗?
一些想法:
环境变量根据定义 _shell/application-agnostic_ 并且被 _all_ 后代进程看到,而不管它们是什么 shell/应用程序创建的。
PowerShell 仅“侦听” _2_ 环境变量, $env:PSModulePath
就是其中之一。
据我了解,Linux 环境(所有环境?)已经将文件/etc/environment
作为系统范围的、独立于 shell 的机制来定义环境变量。
也就是说,如果一组环境变量确实只由 _PowerShell_ 使用,那么系统范围的 _PowerShell_ 配置文件 - $profile.AllUsersAllHosts
- 可以说是定义它们的正确位置。
/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 上支持将值应用于当前进程以外的任何内容。 :皱眉脸:
最有用的评论
我可以建议您更改问题的标题以反映您正在寻找 PowerShell 以引入 _profile-independent_ 方式来 _persistently_ 定义环境变量的事实吗?
一些想法:
环境变量根据定义 _shell/application-agnostic_ 并且被 _all_ 后代进程看到,而不管它们是什么 shell/应用程序创建的。
PowerShell 仅“侦听” _2_ 环境变量,
$env:PSModulePath
就是其中之一。据我了解,Linux 环境(所有环境?)已经将文件
/etc/environment
作为系统范围的、独立于 shell 的机制来定义环境变量。也就是说,如果一组环境变量确实只由 _PowerShell_ 使用,那么系统范围的 _PowerShell_ 配置文件 -
$profile.AllUsersAllHosts
- 可以说是定义它们的正确位置。/etc/profile
,默认 shell 应该处理它,这 (a) 对 GUI 应用程序不生效,并且 (b) 需要默认 shell 来满足这个期望,并且 (c) 需要理解 POSIX-shell 语法的默认 shell(如果 PowerShell 被定义为默认 shell,则不会 [_Update_:/etc/profile
和~/.profile
现在 _are_ 以pwsh -l
开头