Lo que hay que hacer es bastante simple, una vez que pelas todas las capas. Esto funciona bien como una invocación (asegúrese de modificarlo a su ubicación específica de instalación de MSYS2):
set CHERE_INVOKING=1 & set MSYSTEM=MINGW64 & "c:\msys64\usr\bin\bash.exe" --login -i
Personalmente recomendaría configurar el shell para heredar su RUTA:
set CHERE_INVOKING=1 & set MSYSTEM=MINGW64 & set MSYS2_PATH_TYPE=inherit & "c:\msys64\usr\bin\bash.exe" --login -i
La página de configuración de Mis tareas ConEmu termina pareciéndose a esto:
Romper todo hacia abajo
A MSYS2 le gusta configurar el shell de acuerdo con las variables de entorno en lugar de los parámetros de la línea de comandos. Pasar opciones a un programa de esa manera puede parecer poco natural al principio, pero básicamente sigue esta serie simple: set VAR=value & set VAR2=value & "c:\path\to\command" [args]
CHERE_INVOKING
- si se establece en 1, bash se inicia en el directorio de trabajo actual, de lo contrario se inicia en el directorio de inicio del usuario. Esto debe ser configurado para 1
para permitir que el shell funcione como se espera desde el menú contextual de la ventana del Explorador.
MSYSTEM
- Qué subsistema MSYS2 utilizar. Hay tres: MSYS, MINGW32 y MINGW64. los MSYS
El subsistema solo debe ser usado para pacman
operaciones de comando y, por lo tanto, normalmente solo invoco eso a través del icono del menú de inicio de skool antiguo en las raras ocasiones en que se necesita. MINGW32
es inútil para todos por unos pocos usuarios seleccionados y usted sabe quién es usted, probablemente.
MSYS2_PATH_TYPE
- Si unset MSYS usa un mínimo PATH
entorno que contiene solo binarios de MSYS y un par selecciona rutas de Windows, y es un modo requerido para MSYSTEM=MSYS
cáscara solamente . por MINGW
se recomienda usar conchas inherit
- He estado usando MSYS2_PATH_TYPE=inherit
Sin problemas desde hace años.
Hay otra variable MSYSCON
mencionado por otra respuesta y referenciado en msys2_shell.cmd
-- ignoralo. Es solo para uso dentro de la msys2_shell.cmd
archivo por lotes y no guarda relación con el comportamiento de bash.exe o la inicialización del shell MSYS.
Ubicación de instalación de MSYS2
La ruta MSYS2 ha sido intencionalmente codificada como c:\msys64\
ya que esa es la ubicación de instalación predeterminada para el instalador de Windows MSYS2. No tiene sentido en este caso usar %ConEmuDir%
ya que eso es relativo a %PROGRAMFILES%
, y MSYS2 se instala más típicamente en relación con el directorio raíz del disco duro. Nota que hace tiene sentido usar %ConEmuDir%
cuando se hace referencia al shell MSYS2 que viene con Git para Windows , desde eso es instalado en relación con %PROGRAMFILES%
.
No hay una manera fácil de saber la ubicación de instalación de MSYS2. Tampoco hay una variable de entorno configurada por MSYS2, por mucho que me gustaría. ¿No estaría bien si MSYS2 tuviera la opción de exportar algo? MSYSTEM_HOME
en el entorno de su máquina? Pero no es así, por lo que, como usuario, es totalmente suyo saber dónde está instalado y apuntar a ConEmu allí.
Respecto a msys2_shell.cmd
:
No lo uses El archivo por lotes se nombra incorrectamente. Deberia llamarse msys2_terminal.cmd
o similar, ya que lo que realmente está haciendo es una configurando un terminal completo para el shell . Este es un error de terminología común, especialmente en los sistemas operativos Windows donde nunca ha habido una separación clara de terminal desde cáscara . Así es como funciona, explicado desde una perspectiva de usuario de Windows:
Cáscara - Este es el procesador de comandos y el batch / script runner. Es esencialmente una aplicación de línea de comandos muy similar a cualquier otra aplicación de línea de comandos. Un shell ni siquiera requiere ninguna conexión de ventana o teclado visible. Puede operar completamente en segundo plano en archivos, transmisiones u otras fuentes de entrada / salida de datos.
Terminal - esto es un aplicación de ventana que proporciona una interfaz de teclado / ratón a la programa shell . En las ventanas, a menudo se la denomina Ventana de consola . Los comandos del teclado se canalizan al programa shell, y la salida se muestra dentro de la ventana con barras de desplazamiento, texto en color y otras funciones divertidas.
En este escenario, quiero que mi terminal sea ConEmu y mi concha de ser BASH (mingw64) . Por eso quiero ConEmu para iniciar el shell y solamente la cáscara. No quiero ConEmu para comenzar menta . Esos son ambos terminales y eso nos haría tener ventanas emergentes secundarias, una para ConEmu y otra para menta. Pero eso es exactamente lo que intenta correr. msys2_shell.cmd
haré Así que no lo uses.