在 Powershell 中调用 WSL 'bash -c' 时会加载哪个配置文件?
Which profile gets loaded when invoking WSL's 'bash -c' in Powershell?
在安装和设置 WSL (Debian) 的活动 Powershell 会话中,运行 bash -c 'whoami'
显示我已通过主机身份验证的 Active Directory 用户。但是,运行 bash -c 'env'
没有显示我在 /home/user
和 /mnt/c/Users/user
配置文件中设置的环境变量。从 Powershell 中执行单个 Bash 命令时使用哪个配置文件(如果有)?
编辑:
我在 /etc/bash.bashrc
找到了默认系统 .bashrc
并向其中添加了想要的 export
语句,但是当 运行 bash -c 'env'
.
编辑 2:
将导出添加到 /etc/profile
也没有达到预期的效果。
$ echo $-
将显示一个字符串,用于标识您正在 运行 执行 'echo' 命令的 bash 会话的属性。
在登录 shell 或从登录 shell 启动的交互式子 shell 中,我可以在该字符串中看到字母 "i"。在 bash 会话中,仅针对 运行 命令启动,例如使用 'bash -c',此输出中缺少字母 "i",表明会话不是交互式的。您的 .bashrc 文件(或系统级等效文件)在 bash 非交互式会话中不是 运行。这是来自 RH7 linux 框的示例。我在 mac 运行ning macos.
上看到了同样的差异
~ $ ssh c7a
Last login: Tue Dec 31 07:29:29 2019 from gateway
[builder@c7a ~]$ echo $-
himBH
[builder@c7a ~]$ bash -c 'echo $-'
hBc
[builder@c7a ~]$
所以我相信对于使用 bash -c 的单个命令哪个配置文件是 运行 的问题的答案是 "none".
在安装和设置 WSL (Debian) 的活动 Powershell 会话中,运行 bash -c 'whoami'
显示我已通过主机身份验证的 Active Directory 用户。但是,运行 bash -c 'env'
没有显示我在 /home/user
和 /mnt/c/Users/user
配置文件中设置的环境变量。从 Powershell 中执行单个 Bash 命令时使用哪个配置文件(如果有)?
编辑:
我在 /etc/bash.bashrc
找到了默认系统 .bashrc
并向其中添加了想要的 export
语句,但是当 运行 bash -c 'env'
.
编辑 2:
将导出添加到 /etc/profile
也没有达到预期的效果。
$ echo $-
将显示一个字符串,用于标识您正在 运行 执行 'echo' 命令的 bash 会话的属性。
在登录 shell 或从登录 shell 启动的交互式子 shell 中,我可以在该字符串中看到字母 "i"。在 bash 会话中,仅针对 运行 命令启动,例如使用 'bash -c',此输出中缺少字母 "i",表明会话不是交互式的。您的 .bashrc 文件(或系统级等效文件)在 bash 非交互式会话中不是 运行。这是来自 RH7 linux 框的示例。我在 mac 运行ning macos.
上看到了同样的差异~ $ ssh c7a
Last login: Tue Dec 31 07:29:29 2019 from gateway
[builder@c7a ~]$ echo $-
himBH
[builder@c7a ~]$ bash -c 'echo $-'
hBc
[builder@c7a ~]$
所以我相信对于使用 bash -c 的单个命令哪个配置文件是 运行 的问题的答案是 "none".