Windows子系统Linux(WSL)的更好的终端体验?

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

有可能:

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

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

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

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

export DISPLAY="localhost:0" export TERM=xterm-256color 

从这个reddit修复 dbus:

 sudo sed -i 's$.*$tcp:host=localhost,port=0$' /etc/dbus-1/session.conf 

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

我很满意这个设置并使用NeoVim +许多原生linux插件,即使我的“for-work”机器必须是Windows。 🙂

也可以在Bash-on-Linux-on-Windows上启动SSH服务器,然后连接到它,例如来自Cytwin的MinTTY。

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

编辑:VBScript的答案很棒。 这是相同的脚本,但是JScript版本……

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

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

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

     powershell -windowstyle hidden -Command "iex \"bash ~ -c 'DISPLAY=:0 xfce4-terminal'\" " 

其他说明:

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

在一个新的Ubuntu安装上,我刚刚安装了XMing(在Windows中)然后(在Ubuntu中)xfce4-terminal,并且在我export DISPLAY=:0 ,它工作正常。

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

 WScript.CreateObject("WScript.Shell").run "bash -l -c xfce4-terminal", 0, True 

(在.profile设置$ DISPLAY。)

编辑:要使脚本可以固定,请使用目标wscript "C:\path\to\thescript.vbs" thescript.vbs”创建一个快捷方式。

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

截图

在Windows上:

  • 单击bash窗口的左上角。
  • 在打开的菜单中选择“属性”
  • 设置你想要的选项,如字体等(甚至有一个Ubuntu单声道字体!)
  • 设置属性后,它们将应用于当前窗口。 要将它们设置为默认值,请单击窗口的左上角,然后单击默认值。
  • 您可以按Alt + Enter切换全屏模式。

我希望这有帮助。

ConEmu很棒! 只需安装它并启动一个新的{bash}控制台。 我将cd ~添加到我的.bashrc以使其默认在我的主目录中启动。

好的解释: https : //conemu.github.io/en/BashOnWindows.html

扩展了aikeru和n.caillou的答案,因为他们的VBScript / JScript解决方案都不能立即为我工作。

 Call WScript.CreateObject("WScript.Shell").Run("bash.exe -l -c 'DISPLAY=:0.0 xfce4-terminal --working-directory $HOME'", 0, True). 

在run命令中使用括号时,需要通过Call预先添加脚本,请参见此处 。 另外,蜱需要反过来。 此外, xfce4-terminal的附加参数将启动用户主文件夹中的终端。 很抱歉,如果这实际上是JScript代码,我不知道这些脚本语言。

将其保存为文件vbscript.vbs并从cmd提示符执行

 wscript vbscript.vbs 

然后在延迟2秒后打开一个xfce4终端窗口(给定XMing或类似的正在运行)。 将此转换为n.caillou的作品所建议的快捷方式并单击快捷方式将自动生成一个新的xfce终端窗口,但有一些延迟。

自从Windows 10(和WSL)的最新更新以来,一切似乎都在使用“本机”Windows bash控制台。 (我不是在谈论着名的1809 Windows更新)。 这甚至在企业版上至少可以用于1803 17134.345版本)。

请参阅https://www.hanselman.com/blog/SettingUpAShinyDevelopmentEnvironmentWithinLinuxOnWindows10.aspx上的文章

有一点需要注意 – 要在Windows中真正使用bash控制台,应该启动tmux – 一切都将按照Scott在他的博客中所展示的那样工作。