Windows 终端:如何在同一个 WSL1 Ubuntu 上使用不同的启动命令创建多个配置文件

Windows 终端:如何在同一个 WSL1 Ubuntu 上使用不同的启动命令创建多个配置文件

我在 Windows 10 上,有 WSL1 Ubuntu。在 Windows 终端上,我有一个名为“Ubuntu”的配置文件。(对于这个问题,假设我无法更改这些工具 - 例如,我无法升级到 WSL2,我无法安装不同的终端仿真器。)

在 WSL1 Ubuntu 上,我编写了一个命令,这样.bashrc,每当我启动此配置文件时,它都会自动在 Ubuntu 中运行该命令。

我想创建一个单独的配置文件,转到相同的 Ubuntu 安装,但在启动时运行不同的命令。

我的第一个想法是创建一个新的配置文件(通过复制 Ubuntu 配置文件),然后以某种方式使用其他命令让它获取不同的 .bashrc 文件。

我以为我可以编辑 settings.json 文件来修改启动 Ubuntu 的 wsl.exe 命令 - 但我还没有找到一种方法来传递命令以便在 Ubuntu 启动后运行它。

有没有办法为同一个 WSL1 Ubuntu 安装创建单独的 Windows 终端配置文件,只需在启动时运行不同的命令,或者在启动时获取不同的 bashrc 文件?

答案1

Windows 终端配置文件有多种类型:

  • 动态生成的配置文件:这可能是您在 Ubuntu 配置文件中默认看到的内容。启动时,Windows Terminal 会查询已安装的 shell 的多个“来源”,其中一个是“Windows.Terminal.Wsl”。如果您查看配置文件上的属性,settings.json您应该会看到这一点。"source": "Windows.Terminal.Wsl"

  • 有一个相当新的“JSON 片段扩展”,它允许第三方安装程序通过将其存储在知名目录中来插入他们自己的配置文件片段。

  • 然后是“基本”用户管理配置文件,这就是您在本例中要寻找的。假设您使用的是较新的 Windows Terminal 版本,最简单的方法是使用设置 GUI 创建新的配置文件并在那里设置命令行。但是如果您想使用settings.json,您通常需要用"commandline"属性代替"source"。例如:

    {
        "commandline": "wsl.exe ~ -e tmux", 
        "name": "Ubuntu w/Tmux"
    },
    {
        "commandline": "wsl.exe ~ -e python3", 
        "name": "Python REPL in Ubuntu"
    },
    ...
    
    

    ~选项在用户的 Linux $HOME 目录中启动 WSL。它必须是wsl命令后的第一个选项。 -e command正如您可能预料的那样,在启动时执行另一个命令。

最好删除已添加的命令~/.bashrc并简单地创建两个配置文件——每个要启动的命令一个。

但如果你确实想要两个单独的~/.bashrc文件,那么它们"commandline"看起来会像这样(未经测试):

wsl.exe ~ -e bash --rcfile ~/.other_bashrc

相关内容