如何使用 powershell 中预加载的“.bash_aliases”执行 WSL 命令
How to execute WSL command with preloaded ".bash_aliases" from powershell
我需要 运行 来自 CMD/PS 的 WSL 命令,而无需实际输入 WSL shell,例如:
wsl -d myDistro -u myUser echo $MY_EXP_VAR
我在 ~/.bash_aliases
中定义了我的变量和别名(它们也在 .profile
、.bashrc
、.bash_profile
中,当我打开 WSL shell 时,只需wsl [enter]
或使用这些参数,所有别名和导出的变量都对我可用,但是当我尝试 运行 之前显示的 wsl -d myDistro -u myUser echo $MY_EXP_VAR
它打印空行,当我 运行 wsl -d myDistro -u myUser cat ~/.bash_aliases
它会正确打印文件。
我已经尝试添加
if [ -f ~/.bash_aliases ]; then
. ~/.bash_aliases
fi
在 /etc/profile
或 /etc/bash.bashrc
的末尾,但这没有帮助。
任何提示如何添加我的变量以便我可以在不启动 shell 的情况下执行命令?我需要这个来自 AndroidStudio 的 运行 命令作为 运行 配置,而不是来自终端。
目前在移动设备上,所以我还没有机会仔细检查,但凭记忆...
尝试:
wsl -d myDistro -u myUser -e bash -li -c 'echo $MY_EXP_VAR'
这应该允许您的配置文件执行,因为您 运行 bash 作为登录 shell 并要求它也提供交互式启动脚本。如果您不强制 -li
,WSL 将以非交互方式运行 Bash 并且作为非登录 shell,这解释了为什么您的配置没有获取来源。
我需要 运行 来自 CMD/PS 的 WSL 命令,而无需实际输入 WSL shell,例如:
wsl -d myDistro -u myUser echo $MY_EXP_VAR
我在 ~/.bash_aliases
中定义了我的变量和别名(它们也在 .profile
、.bashrc
、.bash_profile
中,当我打开 WSL shell 时,只需wsl [enter]
或使用这些参数,所有别名和导出的变量都对我可用,但是当我尝试 运行 之前显示的 wsl -d myDistro -u myUser echo $MY_EXP_VAR
它打印空行,当我 运行 wsl -d myDistro -u myUser cat ~/.bash_aliases
它会正确打印文件。
我已经尝试添加
if [ -f ~/.bash_aliases ]; then
. ~/.bash_aliases
fi
在 /etc/profile
或 /etc/bash.bashrc
的末尾,但这没有帮助。
任何提示如何添加我的变量以便我可以在不启动 shell 的情况下执行命令?我需要这个来自 AndroidStudio 的 运行 命令作为 运行 配置,而不是来自终端。
目前在移动设备上,所以我还没有机会仔细检查,但凭记忆...
尝试:
wsl -d myDistro -u myUser -e bash -li -c 'echo $MY_EXP_VAR'
这应该允许您的配置文件执行,因为您 运行 bash 作为登录 shell 并要求它也提供交互式启动脚本。如果您不强制 -li
,WSL 将以非交互方式运行 Bash 并且作为非登录 shell,这解释了为什么您的配置没有获取来源。