更好的 Windows Subsystem for Linux(WSL) 终端体验?

Dav*_*uer 35 command-line windows-subsystem-for-linux

适用于 Linux 的 Windows 子系统 (WSL) 的终端相当小。我没有经常使用 Windows 上的终端——我通常使用 Ubuntu 或 OSX——但我很惊讶默认终端是如此裸露。

是否可以:

  1. 将 Windows 终端程序连接到 WSL 或

  2. 从 WSL 启动 Ubuntu 终端程序作为 X 窗口?

aik*_*eru 26

我个人选择后者:在多窗口模式下使用 VcXsrv 作为我的 X 服务器,然后启动 xfce4-terminal(因为 gnome-terminal 有视觉问题,我不想尝试学习如何修复),突然我有了具有字体和颜色支持的称职终端。

我发现我需要将这些添加到我的 bashrc 中...

export DISPLAY="localhost:0"
export TERM=xterm-256color
Run Code Online (Sandbox Code Playgroud)

执行从这个reddit的修复为DBUS:

sudo sed -i 's$<listen>.*</listen>$<listen>tcp:host=localhost,port=0</listen>$' /etc/dbus-1/session.conf
Run Code Online (Sandbox Code Playgroud)

我还安装了 compiz 并使用 cbwin 项目从我的 xfce4-terminal shell 运行 Windows 程序。

我对这个设置非常满意,并使用 NeoVim + 很多原生 linux 插件,即使我的“工作”机器必须是 Windows。:)

也可以在 Bash-on-Linux-on-Windows 中启动一个 SSH 服务器,然后连接到它,比如从 MinTTY 像从 Cygwin 一样。

PS:为了使启动 xfce4-terminal 无痛并且没有额外的 bash cmd 窗口,我编写了一个程序,该程序除了使用参数启动 bash 进程之外什么都不做,以在没有控制台窗口的情况下启动 xfce4-terminal。我在 C# 中做到了这一点 - 基本上使用参数“UseShellExecute”false 和“CreateNoWindow”true。然后我把它固定在我的任务栏上,它几乎是无缝的。

编辑: VBScript 的答案非常棒。这是相同的脚本,但 JScript 版本...

WScript.CreateObject("WScript.Shell").run('bash.exe -l -c "DISPLAY=:0.0 xfce4-terminal"', 0, false);
Run Code Online (Sandbox Code Playgroud)


And*_*Mao 22

花了一些时间才弄清楚其他答案中的所有隐含步骤,所以这里是一步一步的总结:

  1. 在 Windows 上,安装VcXsrvXMing
  2. 在 Bash for Windows 中,安装终端:sudo apt-get install xfce4-terminal.
  3. 添加export DISPLAY=:0到您的.bashrc. (将它添加到.profile.bash_profile 对我不起作用)。这将允许您xfce4-terminal从 bash 正确启动,但与下面的命令正交。
  4. 在快捷方式或运行提示中运行以下命令(如@OhJeez 在评论中建议的那样):

    powershell -windowstyle hidden -Command "iex \"bash ~ -c 'DISPLAY=:0 xfce4-terminal'\" "
    
    Run Code Online (Sandbox Code Playgroud)

其他注意事项:

  • ~开始bash你的home目录,你可以删除它在任何目录下的启动.vbs文件中,而不是。因此,将其放入 中很方便C:\Users\foo,例如。
  • 请注意,必须运行 XMing 才能使脚本正常工作;为了在 Windows 中自动启动它,您可以按照本文中的说明进行操作。
  • Emacs 24(包含在 Ubuntu 14.04 中)似乎不适用于 XMing;我必须按照这篇文章中的建议安装更新的版本


Bra*_*ung 13

今天建议您使用微软开源的“Windows终端” 。

正式版本可于今年 6 月中旬从 Windows Store 获取。

但您也可以使用下面的预览版本来体验它。 https://github.com/yanglr/WindowsDevTools/blob/master/awosomeTerminal/WindowsTerminal_SelfSigned_x86_x64_arm64.7z

安装完成后,运行结果如下:

图1

图2

图3

图4


小智 11

我为 Linux 的 Windows 子系统(WSL)创建(并使用)了一个名为wsl-terminal 的开源终端,它基于minttywslbridge

截屏

  • 如果你承认自我推销是可以的 (6认同)
  • 并且请添加一些关于为什么 `wsl-terminal` 将提供更好的终端体验的细节。 (6认同)
  • 感谢您分享这个。你的东西已经比内置终端更好用了——至少它可以更好地处理命令行上的换行。但是,快速转到命令开头的 CTRL-A 仍然失败。我很高兴人们自我推销这样的东西。人们应该冷静下来。 (2认同)

n.c*_*lou 5

在全新的 Ubuntu 安装中,我刚刚安装了 XMing(在 Windows 中)然后(在 Ubuntu 中)xfce4-terminal,在我之后export DISPLAY=:0,它工作了。

为了摆脱 Windows 的默认控制台,这个 VBS 脚本完成了这项工作:

WScript.CreateObject("WScript.Shell").run "bash -l -c xfce4-terminal", 0, True
Run Code Online (Sandbox Code Playgroud)

(在您的.profile. 中设置了 $DISPLAY 。)

编辑:为了使脚本可以固定,请创建一个带有 target 的快捷方式wscript "C:\path\to\thescript.vbs"