Лучший опыт работы с терминалами для подсистемы Windows для Linux(WSL)?

Терминал для Windows Subsystem для Linux (WSL) довольно минимален. Я не очень часто использовал терминал в Windows - я обычно использую Ubuntu или OSX - но я удивлен, что терминал по умолчанию настолько прост.

Можно ли:

  1. Подключите терминальную программу Windows к WSL или

  2. Запустить терминальную программу Ubuntu из WSL как окно X?

12 ответов

Решение

Я лично делаю последнее: использую VcXsrv в качестве моего X-сервера в режиме нескольких окон, затем запускаю xfce4-терминал (потому что у gnome-терминала были визуальные проблемы, которые я не пытался научиться исправлять), и внезапно у меня компетентный терминал с поддержкой шрифтов и цветов.

Я обнаружил, что мне нужно добавить их в мой bashrc...

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

Сделайте исправление из этого reddit для dbus:

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

Я также установил compiz и использую проект cbwin для запуска программ windows из моей оболочки xfce4-терминала.

Я очень доволен этой установкой и использую NeoVim + множество родных плагинов для Linux, хотя моя "для работы" машина должна быть Windows.:)

Также можно запустить SSH-сервер в Bash-on-Linux-on-Windows, а затем подключиться к нему, скажем, из MinTTY, как из Cygwin.

PS: чтобы сделать запуск xfce4-терминала безболезненным и без дополнительного окна cmd bash, я написал программу, которая ничего не делает, кроме запуска процесса bash с аргументами для запуска терминала xfce4 без окна консоли. Я сделал это в C# - в основном использовать аргументы "UseShellExecute" false и "CreateNoWindow" true. Затем я прикрепил это к моей панели задач, и это почти не кажется.

РЕДАКТИРОВАТЬ: ответ с VBScript блестящий. Вот тот же сценарий, но версия JScript...

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

Потребовалось некоторое время, чтобы выяснить все подразумеваемые шаги в других ответах, поэтому вот пошаговое резюме:

  1. В Windows установите VcXsrv или XMing.
  2. В Bash для 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'\" "
    

Другие заметки:

  • ~ начинается bash в вашем домашнем каталоге, вы можете удалить его, чтобы начать в любом каталоге .vbs вместо этого файл находится в. Так что удобно положить его в C:\Users\foo, например.
  • Обратите внимание, что XMing должен быть запущен, чтобы скрипт работал; чтобы запустить его автоматически с Windows, вы можете следовать инструкциям в этой статье.
  • Emacs 24 (входит в Ubuntu 14.04), похоже, не работает с XMing; Я должен был установить более новую версию, как предложено в этом посте.

Сегодня вам предлагается использовать "терминал Windows", который открыт от Microsoft.

Официальную сборку можно получить в Windows Store в середине июня этого года.

Но вы также можете испытать это, используя приведенную ниже предварительную версию. https://github.com/yanglr/WindowsDevTools/blob/master/awosomeTerminal/WindowsTerminal_SelfSigned_x86_x64_arm64.7z

После установки, результаты работы ниже:

Я создал (и использую) терминал с открытым исходным кодом для подсистемы Windows для Linux (WSL) под названием wsl-терминал, он основан на mintty а также wslbridge,

https://raw.githubusercontent.com/wiki/goreliu/wsl-terminal/images/wsl-terminal-3.png

При новой установке Ubuntu я только что установил XMing (в Windows), затем (в Ubuntu) xfce4-терминал и после того, как export DISPLAY=:0, это сработало.

Чтобы избавиться от консоли Windows по умолчанию, этот сценарий VBS выполняет свою работу:

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

(С установленным $DISPLAY в вашем .profile.)

редактировать: и чтобы сделать сценарий выводимым, создайте ярлык с целью wscript "C:\path\to\thescript.vbs",

В Windows:

  • Нажмите на верхний левый угол окна bash.
  • В открывшемся меню выберите "Свойства"
  • Установите параметры, которые вы хотите, как шрифт и т. Д.(Есть даже моно шрифт Ubuntu!)
  • После настройки свойств они будут применены к текущему окну. Чтобы установить их по умолчанию, щелкните в верхнем левом углу окна и выберите по умолчанию.
  • Вы можете нажать Alt+Enter для переключения в полноэкранный режим.

Надеюсь, это поможет.

ConEmu прекрасно работает! Просто установите его и запустите новую консоль {bash}. я добавил cd ~ к моему .bashrc чтобы он по умолчанию начинался в моем домашнем каталоге.

Хорошее объяснение: https://conemu.github.io/en/BashOnWindows.html

Extraterm - это больше, чем просто эмулятор терминала. Он предоставляет набор инструментов для работы с терминалом и приложениями командной строки.

  • Характеристики
  • Поддерживает Linux и macOS, в Windows WSL, CMD, PowerShell и Cygwin
  • совместимый с xterm
  • Несколько вкладок и панелей, разделенных и выложенных плиткой, как вам нравится
  • Показать изображения в терминале
  • Поддержка юникода
  • Цвет смайликов
  • Клавиатура "Командная палитра"
  • Настраиваемые привязки клавиш
  • Выбор на основе клавиатуры
  • Интеграция с оболочкой; может изолировать и выводить команду frame. (bash, zsh и fish поддерживаются)
  • Простая загрузка и загрузка с использованием интеграции оболочки
  • Вывод команды можно редактировать на месте. Редактирование нескольких курсоров
  • Предыдущий вывод команды можно использовать как ввод для новых команд
  • Поддерживает темы iTerm2 и TextMate
  • Увеличение текста

Поскольку последние обновления для Windows 10 (и WSL), похоже, все работают с использованием "родной" консоли Windows Bash. (И я не говорю об (в) известном обновлении Windows 1809). Это работает даже на версии Enterprise, по крайней мере, для версии 1803 (17134.345).

См. Статью на https://www.hanselman.com/blog/SettingUpAShinyDevelopmentEnvironmentWithinLinuxOnWindows10.aspx

Небольшое предостережение - чтобы действительно использовать консоль bash в Windows, нужно запустить tmux - и все будет работать, как показано Скоттом в его блоге.

https://hyper.is/

  • Он основан на электроне, что позволяет легко развивать и расширять с помощью JavaScript.
  • Он не использует консоль Windows по умолчанию в любом случае.
  • Это позволяет вам выбрать вашу оболочку bash, cmd, PowerShell.

    the shell to run when spawning a new session (i.e. /usr/local/bin/fish)
    if left empty, your system's login shell will be used by default
    
    Windows
    - Make sure to use a full path if the binary name doesn't work
    - Remove `--login` in shellArgs
    
    Bash on Windows
    - Example: `C:\\Windows\\System32\\bash.exe`
    
    PowerShell on Windows
    - Example: `C:\\WINDOWS\\System32\\WindowsPowerShell\\v1.0\\powershell.exe`
    shell: 'C:\\Windows\\System32\\bash.exe',enter code here
    

Очень хорошие темы и плагины

plugins: [
    //"hyper-dracula"
    //"hyper-solarized-dark"
    "hyper-material-theme"
],

Используя это руководство, я смог получить мой WLS, Bash работает очень хорошо.

Расширение ответов 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).

Сценарий должен предшествовать Call при использовании скобок в команде запуска смотрите здесь. Также галочки должны были быть наоборот. Более того, дополнительный аргумент для xfce4-терминала запускает терминал в домашней папке пользователя. Извините, если на самом деле работал код JScript, я понятия не имею об этих языках сценариев.

Сохранение в виде файла vbscript.vbs и выполнение из командной строки cmd

wscript vbscript.vbs

затем открывает окно терминала xfce4 (если запущен XMing или похожий) через 2 секунды. Превращение этого в ярлык, как на самом деле предлагают работы n.caillou, и нажатие на ярлык автоматически вызовет новое окно терминала xfce с некоторой задержкой.

Терминал для более современной эпохи https://eugeny.github.io/terminus/

Terminus - это терминал, в значительной степени вдохновленный Hyper. Тем не менее, он предназначен для людей, которые должны добиться своей цели.

  • Работает на Windows, MacOS и Linux
  • Тематические и цветовые решения
  • Полностью настраиваемые ярлыки
  • Полная поддержка Юникода, включая символы двойной ширины
  • Не душит быстродействующие выходы
  • Правильный опыт работы в Windows в оболочке, включая завершение табуляции (через Clink)
  • Поддержка PowerShell (+Core), WSL (Bash для Windows), Git-Bash, Cygwin, Cmder и CMD
  • Помнит ваши вкладки
  • Интегрированный SSH клиент и менеджер соединений
Другие вопросы по тегам