Quiero crear una cuadrícula de consola 2x2, y quiero que sea mi configuración predeterminada, es decir, cuando abro ConEmu, esta configuración es la configuración de inicio. He escrito una tarea como la siguiente:
& gt; * cmd -cur_console: n
* powershell -cur_console: s1TVn
cmd / A / Q / K "C: \ dev \ msys64 \ msys2_shell.bat" -cur_console: s1THn
ghci.exe -cur_console: s2THn
El problema está con el último comando. Quiero comenzar msys2
, pero cuando ejecuto mi tarea, para la tercera línea, obtengo una consola, pero no se ejecuta dentro de ConEmu, la abre como una ventana separada. ¿Cómo puedo arreglar esta configuración?
Además, ¿cómo puedo configurar esta configuración como la predeterminada cuando inicio ConEmu, mientras que ahora cuando lo inicio, solo obtengo una única consola cmd?
También tuve problemas para conseguir que los shells MSYS2, MinGW32 y MinGW64 (v2016-12-07) funcionen en ConEmu v161206.
La única solución de trabajo (medio portátil) que he encontrado es la siguiente.
Crea una nueva tarea con el nombre.
{Shells::mingw-64}
y los siguientes comandos en ConEmu para el shell MinGW64:Crea una nueva tarea con el nombre.
{Shells::mingw-32}
y los siguientes comandos en ConEmu para el shell MinGW32:Crea una nueva tarea con el nombre.
{Shells::msys2-64}
y los siguientes comandos en ConEmu para el shell MSYS2:Atención: Modifique las rutas relativas de arriba para que coincidan con la ruta a MSYS2 en su sistema.
La solución es semi-portátil, ya que establece explícitamente el ejecutable de ConEmu (cámbielo a
ConEmu.exe
para x86).No estoy seguro de si el valor de la
MSYSCON
La variable de entorno importa. Solo lo he configurado para la seguridad, porque el archivo por lotes MSYS2msys2_shell.cmd
también lo establece.Una alternativa es utilizar el
msys2_shell.cmd
script por lotes. Este enfoque tiene la gran desventaja de que elmsys2_shell.cmd
genera un nuevo proceso a través de WindowsSTART
comando, por lo tanto, se agregan dos pestañas en ConEmu.Crea una nueva tarea con el nombre.
{Shells::mingw-64}
y los siguientes comandos en ConEmu para el shell MinGW64:Crea una nueva tarea con el nombre.
{Shells::mingw-32}
y los siguientes comandos en ConEmu para el shell MinGW32:Crea una nueva tarea con el nombre.
{Shells::msys2-64}
y los siguientes comandos en ConEmu para el shell MSYS2:los
msys2_shell.cmd
está destinado a ser utilizado directamente desde unaCMD.EXE
, conConEmu64.exe
/ConEmu.exe
en elPATH
:Ese comando abre una nueva pestaña de MinGW64 en ConEmu.
tl; dr: Recomiendo el primer acercamiento. Aquí hay una captura de pantalla como prueba en ConEmu:
fuente
-new_console:C:"%ConEmuDir%\..\..\..\msys64\mingw64.exe"
La parte no es necesaria, entre otras cosas.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):
Personalmente recomendaría configurar el shell para heredar su RUTA:
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 para1
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. losMSYS
El subsistema solo debe ser usado parapacman
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ínimoPATH
entorno que contiene solo binarios de MSYS y un par selecciona rutas de Windows, y es un modo requerido paraMSYSTEM=MSYS
cáscara solamente . porMINGW
se recomienda usar conchasinherit
- He estado usandoMSYS2_PATH_TYPE=inherit
Sin problemas desde hace años.Hay otra variable
MSYSCON
mencionado por otra respuesta y referenciado enmsys2_shell.cmd
-- ignoralo. Es solo para uso dentro de lamsys2_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.fuente