Я просто столкнулся с этой проблемой. Чтобы запустить zsh, я сделал это:
- Установлен MSYS2
- Из каталога я установил MSYS2, я запустил
mingw32_shell.bat
- Обновил все установленные пакеты, запустив
pacman -Syu
- Установил zsh и curl, запустив
pacman -Sy zsh curl
- Закрыл оболочку MinGW, запустив
exit
- я не запустился zsh
сразу после установки.
- Отредактировал msys2_shell.bat, mingw32_shell.bat и mingw64_shell.bat и изменил каждый экземпляр:
start %WD%mintty -i /msys2.ico /usr/bin/bash --login %*
на:
start %WD%mintty -i /msys2.ico /usr/bin/zsh --login %*
(в строке 39 с 2015-09-23)
- Ран
mingw32_shell.bat
- В меню конфигурации zsh я выбираю
0
создание файла .zshrc.
Когда конфигурация закончилась, я увидел:
zsh-newuser-install:1119: command not found: rm
Это выглядело неправильно ... так rm
как в здоровой системе * nix никогда не должно быть net (я предполагаю, что это ошибка в пакете MSYS2 для zsh), но после этого все работало нормально.
В первый раз, когда я попытался сделать это, запустив пакетный файл для создания нового сеанса, я получил сообщение об ошибке, занятой в zsh-памяти. Чтобы это исправить, я закрыл все открытые окна MinTTY и запустил autorebase.bat
файл в установочном каталоге MSYS2. После этого все заработало.
Затем я установил ой-мой-zsh. С помощью:
sh -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
rm
самом деле действительно невиновен. Конец/usr/share/zsh/functions/Newuser/zsh-newuser-install
скрипта содержитrm -f $tmpfile*
для очистки после себя. Это точно так же в моей текущей установке Fedora/usr/share/zsh/5.7.1/functions/zsh-newuser-install
.Я столкнулся с этим, используя более новый msys2-launcher, который предоставляет средства
.exe
запуска, а не командные файлы.Для этого, это был просто вопрос изменения
.ini
файлов вместе с пусковыми внутри корневой директории Msys2 (для 64-разрядной версии с, он может содержатьmsys2.ini
,mingw32.ini
аmingw64.ini
). Для каждого из этих INI-файлов добавьте строку для установки оболочки:источник
zsh
в качестве оболочки. Для настройки oh-my-zsh можно рассмотреть этот метод -skel
насколько я понимаю, эта часть не относится к msys2.Отредактируйте
/etc/nsswitch.conf
и измените настройки ниже:источник
msys2_shell.cmd
файла летучей мыши, но изменить его в.cmd
файле не влияет на оболочку , если вы должны начать с одного из.exe
сКогда изменение оболочки по умолчанию не поддерживается, один из способов использовать понравившуюся оболочку - запустить ее сразу после запуска оболочки по умолчанию.
Например, просто написать
zsh
на~/.bashrc
, и при запуске Баш, он будет работать ЗШ для вас. Как бы то ни было, запускается случайный процесс bash, и вам нужно дважды выходить из оболочки при выходе из системы. Чтобы сделать это лучше, напишитеexec zsh
вместоzsh
этого, процесс bash полностью заменен процессом zsh.Этот метод не идеален, но в большинстве случаев он должен работать хорошо. По сравнению с изменением жестко запрограммированных значений это может вызвать меньше проблем с совместимостью.
Впервые упоминается в этом ответе о StackOverflow .
источник
Моя установка ничего не есть файлы , указанные в общепринятом ответ (
msys2_shell.bat
,mingw32_shell.bat
иmingw64_shell.bat
).Вместо этого моя установка системы Win10 MSYS2 (с использованием установочного файла
msys2-x86_64-20161025.exe
) содержит один файлmsys2_shell.cmd
со строкой:Я изменился
bash
наzsh
. Кажется, работает до сих пор.источник
.exe
файлов, это не установит оболочку, для этого взгляните на ответ Алана ПирсаУ меня есть решение, но оно требует, чтобы вы использовали ConEmu вместо любого другого терминала, который вы используете в настоящее время. Попробуйте, хотя, на мой взгляд, это лучшее терминальное приложение для Windows.
Прежде всего, вам нужно установить zsh с помощью pacman. Я думаю, вы уже достигли этого. Затем вам нужно установить ConEmu (что вы можете сделать с Chocolatey или просто скачав установщик с сайта conemu). В настройках ConEmu, в разделе «Задачи», вы должны добавить новую задачу. Возможно, он уже вызван
Bash::Msys2-64
или что-то в этом роде, так что, возможно, вы сделаете так, чтобы он вызывалсяZsh::Msys2-64
. Название произвольно в любом случае. В поле «Команды» для этой новой задачи вы можете скопировать командуBash::Msys2-64
и заменить ееzsh.exe
там, где это необходимо. Мой, как:Затем в опциях ConEmu «Запуск» вы можете установить это в качестве задачи запуска, чтобы при открытии ConEmu вы всегда попадали прямо в Zsh. Очевидно, что вы также можете установить комбинацию клавиш для открытия ее или любой другой задачи в новой вкладке или что угодно. ConEmu имеет множество вариантов, поэтому я уверен, что вы сможете настроить его так, как вам нравится.
источник
Разработчики MSYS2, очевидно, продолжают изменять свои настройки, потому что в новейших установках
msys2_shell
команда, установленная в Windows для запуска среды MSYS2, принимает-shell
аргумент.Таким образом, чтобы использовать другую оболочку, вы можете отредактировать Свойства одного или нескольких пусковых программ для MSYS2 / MinGW 32 / MinGW 64 и обновить целевой объект для добавления
-shell zsh
или чего-либо еще. (Если оболочки$PATH
для среды MSYS достаточно, вам не нужен полный путь.)Так, например, для запуска «MSYS2 MinGW 64-bit» в «MSYS2 64bit» в моем меню «Пуск» Win7:
Это кажется самым простым и наиболее совместимым способом постоянного переключения, поскольку ваши изменения не будут уничтожены обновлениями или чем-то еще.
Как ни странно, программы запуска не учитывают никакие переменные окружения, записи реестра и т. Д. Если
-shell
в командной строке не передано значение для переопределения, будет использоватьсяLOGINSHELL=bash
значение по умолчанию, которое оно изначально принудительно использует.источник
РЕДАКТИРОВАТЬ: ниже относится к более ранним версиям MSYS2. По состоянию на 2020-01-21 это больше не требуется. Ответ FeRD, кажется, работает лучше всего.
Я хотел использовать рыбу вместо Баш. К сожалению, большинство методов здесь не сработало, возможно, потому что синтаксис рыбы очень отличается.
Лучше всего была идея WZD о запуске
exec fish
в первую очередь, когда начинается bash. Однако все еще оставалась проблема: если я хотел использовать bash, мне нужно было отредактировать,.bashrc
чтобы удалить эту строку, потому что даже если я запустил ее с рыбы, он просто запустил бы другой экземпляр рыбы.Лучше всего убедиться, что он
exec fish
запускается при запуске msys2, но не при каждом запуске bash.Я нашел путь через файл
msys2_shell.cmd
в папке установки msys2. Я нашел эти строки:Кажется, они определяют параметры для передачи в bash, как только он начинается, но только тогда, когда этот скрипт выполняется (в отличие от
.bashrc
). Поэтому я добавил эту строку сразу после:Кажется, все хорошо. Запуск msys2 заменяет bash на fish, как только первая заканчивает загрузку, но если мне нужна командная строка bash, я все равно могу просто начать ее
bash
.источник