如何使用 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,这解释了为什么您的配置没有获取来源。