Вызов подсистемы Windows для приложений Linux через PowerShell/cmd

С недавно выпущенной для инсайдеров Windows сборкой 14316 у нас есть подсистема Windows для Linux (бета), которая позволяет запускать программное обеспечение Ubuntu Linux CLI в Windows. Его можно запустить, выполнив команду bash внутри Windows PowerShell или с помощью приложения «Bash в Ubuntu в Windows».

Итак, мой вопрос о первом способе. Мы можем запустить bash из PowerShell, но никакое другое приложение Ubuntu CLI из него недоступно. Как заставить работать? Допустим, я хочу, чтобы zsh был доступен для запуска без использования bash.


person invisible meerkat    schedule 08.04.2016    source источник
comment
Доступен ли zsh в этой новой вселенной? Он установлен? Вы можете установить его? Это ваши вопросы?   -  person Etan Reisner    schedule 08.04.2016
comment
@EtanReisner Нет, это не мои вопросы. Пожалуйста, прочитайте второй абзац еще раз. Я хотел открыть приложение подсистемы без предварительного запуска bash. Установка zsh такая же, как и в Ubuntu на реальном оборудовании.   -  person invisible meerkat    schedule 08.04.2016
comment
Работает ли запуск zsh (вместо bash) после установки zsh not? Если нет, то почему? Что случается?   -  person Etan Reisner    schedule 08.04.2016
comment
@EtanReisner Это не так. Вот почему я спрашиваю здесь. Он просто возвращает неизвестную ошибку команды, в отличие от меня, за исключением того, что ее можно запустить из powershell, но я хочу, чтобы ее можно было запустить из powershell.   -  person invisible meerkat    schedule 09.04.2016


Ответы (1)


Пока нет, согласно блогу Windows: Запустите Bash на Ubuntu в Windows:

В-третьих, обратите внимание, что инструменты Bash и Linux не могут взаимодействовать с приложениями и инструментами Windows и наоборот. Таким образом, вы не сможете запустить Блокнот из Bash или запустить Ruby в Bash из PowerShell.

Дополнительная информация в Microsoft/CommandLine-Documentation#32, посвященная связанная с этим возможность запускать команды win32 из Bash:

Будьте уверены, мы собираемся изучить историю взаимодействия в будущем, но мы не будем добавлять эту возможность в сроки Windows 10 Anniversary Update.

Возможно, вам повезет с опцией -c bash для запуска определенных команд.

person sander    schedule 10.04.2016
comment
Да, создание функции, которая помещает параметры в -c из PowerShell, вроде как работает. Например, function Bash-Echo($x) { bash -c "echo $x" } или даже с псевдонимами, если параметры не нужны. Я не думаю, что это хорошее решение, но это нормально, как временное. - person invisible meerkat; 10.04.2016
comment
Не думайте о bash.exe исключительно как оболочке bash. Вместо этого думайте об этом как о консоли с доступом к подсистеме Windows Linux (WLS). Если вы установите zsh в качестве оболочки по вашему выбору (вам все равно придется открыть bash.exe) и выберите ее в качестве оболочки по умолчанию, то zsh откроется в консоли. Если это не имеет смысла, посетите askubuntu.com или поищите другую справку по подсистеме Windows Linux. Вы также можете просто ввести zsh в консоли Bash. Вы не можете открыть автономный zsh независимо от системы. - person Thomas Sisson; 20.09.2016
comment
Начиная с версий Windows, выпущенных с конца 2016 года, можно (1) вызывать программы Linux из консоли Windows и (2) вызывать программы Windows из консоли Linux. Вы можете проверить блог WSL и документацию. - person Jaime; 28.05.2018