¿Cómo puedo configurar zsh para que sea el shell predeterminado en Cygwin?
A menos que esté usando cygwin como un entorno multiusuario (en cuyo caso, use chsh
como lo haría en un entorno estándar).
De lo contrario, simplemente cambie cygwin.bat para que se ejecute en zsh -l -i
lugar de bash --login -i
y se ejecutará como un shell de inicio de sesión.
Por supuesto, si desea ejecutar varios shells desde el inicio, simplemente cree un conjunto de .bat
archivos para cargar diferentes shells. ( sh
, ksh
, csh
, fish
Etc.)
Sentí que debería actualizar esto para proporcionar información sobre cómo hacerlo sin chsh
hacerlo aún en el extremo de Unix. Edite el /etc/passwd
archivo y reemplace las ocurrencias de /bin/bash
con /bin/zsh
. (Esto es efectivamente lo chsh
que haría, pero de esta manera lo haría para todos los usuarios de una vez).
mkpasswd -l -p "$(cygpath -H)" > /etc/passwd
y edita el/etc/passwd
archivo recién creadoSi leí bien su pregunta, está buscando algo más que los suministros de chere (que, por supuesto, es bastante bueno por derecho propio).
La versión actual de Cygwin no tiene un archivo / etc / passwd , y el sistema en el que estoy trabajando tiene información de la cuenta de Windows en una base de datos de dominio fuera de mi control. En consecuencia, chsh ya no es compatible.
También descubrí que bash no está codificado en el script startxwin , ni está codificado en ningún archivo .bat. Resulta que no necesitas jugar con los archivos .bat en absoluto.
Buscando cómo cambiar mi shell, encontré algunos consejos sobre mkpasswd
Lo agregué a la mezcla.
La página del manual decía:
(No sé por qué el espacio está tan "apagado" ...)
Luego usé el siguiente comando:
mkpasswd -c | sed -e 'sX / bashX / zshX' | tee -a / etc / passwd
La próxima vez que abra una Terminal Cygwin, irá directamente a zsh
Y eso, creo, es lo que pediste.
fuente
Solo agrego el
bin
directorio en el directorio cygwin a mi variable de entorno de ruta de Windows y luego creo un acceso directo para:o simplemente cambie el acceso directo predeterminado del menú de inicio de cygwin al mismo.
fuente
/bin/zsh
lugar dezsh
.the bin directory in the cygwin directory to my Windows Path Environment Variable
funciona sin este cambio para míi
no es necesaria, ya que será un shell de entrada y nointeractive
.Copiado de mi respuesta en Stack Overflow :
En lugar de crear un archivo passwd, que Cygwin recomienda contra 1 , puede editar /etc/nsswitch.conf . Agregue o edite la siguiente línea:
El lado negativo de este método es que, si tiene varios usuarios, este cambio los afecta a todos. El lado positivo es que es muy simple. El único inconveniente es que tienes que reiniciar Cygwin.
Si haces uso mkpasswd después de este cambio, utilizará su nuevo shell por defecto para todos los usuarios que tienen permiso para iniciar la sesión.
1 La documentación de mkpasswd dice esto:
Realmente no puedo encontrar ningún razonamiento sólido en la guía del usuario , aparte de una mención de que tendrá que regenerar los archivos / etc / passwd y / etc / group si sus usuarios y grupos cambian, lo que supongo que es lo suficientemente decente razón. Puedo decir que el proceso es algo propenso a errores para los novatos.
fuente
Suponiendo que esté interesado en cambiar el shell utilizado en mintty / Cygwin Terminal, primero verifica la variable de entorno SHELL, luego el archivo passwd (ahora inexistente), luego vuelve a / bin / sh, que es lo que parece estar haciendo. por defecto.
Yo era capaz de establecer la variable de entorno SHELL en Windows a
/usr/bin/zsh
y funcionó sin ningún otro cambio. Lo acabo de cambiar para mi usuario de Windows, no globalmente.Establecer una variable de entorno probablemente varía para las diferentes versiones de Windows. Intente buscar "entorno" en su Panel de control de Windows. Para mí, en Windows 7, fue Panel de control → Sistema → Configuración avanzada del sistema, que muestra el panel / cuadro de diálogo Propiedades del sistema, luego la pestaña Avanzado, luego el botón Variables de entorno, que muestra el cuadro de diálogo Variables de entorno, luego crea una nueva variable de usuario llamado
SHELL
con el valor/usr/bin/zsh
. Luego, vuelva a aceptar todo eso y comience un nuevo mintty.fuente
Solo pensé en agregar esta respuesta en caso de que ayude a cualquiera que la esté buscando. Si usa chere (que agrega una opción "Bash prompt here" al menú contextual del botón derecho del mouse de cualquier carpeta), puede configurarlo en zsh ("Zsh Prompt Here") con:
fuente
Si desea utilizar el shell Cygwin dentro del IDE Intellij, use la siguiente configuración dentro de la configuración / herramientas / terminal
Esto incrustará el shell cygwin dentro de intellij en lugar de generar una nueva ventana
fuente