如何在Linux的PowerShell Core中设置Bash变量及umask值?
在Linux PowerShell中设置umask的可行方案
为什么之前的方法无效
bash -c 'umask 0022'是在独立的bash子进程中设置,进程结束后配置直接失效,PowerShell父进程无法继承该设置。- 用
Invoke-Expression执行bash赋值语句会报错,因为PowerShell与bash语法不兼容,PowerShell会按自身规则解析bash语句,导致语法错误。
临时生效方案(当前PowerShell会话)
PowerShell 7.x在Linux环境下原生支持umask命令,直接执行即可:
umask 0022
执行后,当前PowerShell会话中创建的文件都会应用这个权限掩码,启动的子进程(包括bash)也会继承该设置。
永久生效方案(每次启动PowerShell自动应用)
- 查看PowerShell配置文件路径:
$PROFILE
- 若配置文件不存在,创建它:
New-Item -Path $PROFILE -ItemType File -Force
- 打开配置文件,添加以下内容并保存:
umask 0022
下次启动PowerShell时,会自动加载该配置并设置umask。
补充:让bash子进程默认使用指定umask
如果需要bash默认使用该umask值,可编辑bash的配置文件(如~/.bashrc或~/.bash_profile),添加:
umask 0022
但这是bash独立的配置,和PowerShell的设置互不影响。
内容的提问来源于stack exchange,提问作者user9924807
相关产品推荐
相关产品推荐

