在PowerShell脚本中修改某些方面似乎可以修改正在运行的shell。如果我提供脚本而不是运行脚本,这是可以预期的。
script.ps1
// react-native.config.js
module.exports = {
dependencies: {
'<dependency>': {
platforms: {
android: null, // disable Android platform, other platforms will still autolink
},
},
},
};
[cultureinfo]::currentculture = [cultureinfo]::InvariantCulture
Set-PSDebug -Trace 1
因此很明显,调试跟踪处于活动状态,并且文化变化仍在持续...
答案 0 :(得分:4)
从the docs开始,[cultureinfo]::currentculture]
(已加强调):
获取或设置CultureInfo对象,该对象表示当前线程使用的文化。
也就是说,设计更改将对整个线程(不仅是脚本)生效,并且会在线程的整个生命周期(脚本退出后)一直存在,直到您再次更改为止。
因此,如果希望您的文化变化受到影响,则必须手动:
注意事项:
在 Windows PowerShell 中,区域性会在每次运行后自动重置为启动值,但仅在命令提示符下显示。调用命令或脚本;相反,如果一个脚本调用另一个脚本,并且被调用者更改了当前区域性,则该更改对调用脚本仍然有效。
相比之下,PowerShell Core 的行为始终如一,并且永远不会自动重置当前区域性。
请注意,该行为类似于使用Set-Location
(cd
)来更改当前位置(目录),这也影响了整个线程,就像在cmd.exe
批处理中一样文件(除非您使用setlocal
)-例如,在Bash脚本中为 not 。
在PowerShell中,脚本文件(*.ps1
)在运行中 ,批处理文件(*.cmd
,*.bat
)中的内容,而Bash之类的类似POSIX的外壳程序则在子进程中运行脚本,该脚本隐式地且始终将范围内的环境变化范围限定于此类脚本。