for - omf shell
Establecer shell predeterminado en Cygwin (8)
Intente editar /etc/nsswitch.conf en lugar de / etc / passwd
En lugar de crear un archivo passwd, que Cygwin recomienda en contra de 1 , puede editar /etc/nsswitch.conf . Agrega o edita la siguiente línea:
db_shell: /usr/bin/fish
El lado positivo / negativo de este método es que, si tiene varios usuarios, este cambio los afecta a todos. El lado arriba / arriba es que es muy simple. El único problema es que tienes que reiniciar Cygwin.
Si usa mkpasswd
después de este cambio, usará su nuevo shell predeterminado para todos los usuarios que tienen permiso para iniciar sesión.
Referencias
1 La documentación de mkpasswd
dice esto:
No use este comando para generar un archivo local / etc / passwd, a menos que realmente necesite uno. Consulte la Guía del usuario de Cygwin para obtener más información.
Realmente no puedo encontrar ningún razonamiento sólido en la guía del usuario , aparte de mencionar que tendrá que volver a generar 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.
He estado usando Cygwin durante bastante tiempo ahora. Ahora quiero pasar a pescar desde bash. Todo el mundo está diciendo que debes usar chsh -s /usr/bin/fish
, pero por alguna razón, chsh
no funciona para mí. Intentar modificar mi archivo Cygwin.bat
tampoco funciona, y tampoco cambiar mi /etc/passwd
.
Realmente no entiendo lo que está pasando. ¿Alguien podría ayudarme por favor?
Estaba intentando cambiar mi shell por defecto en cygwin a zsh y encontré algunas partes de las respuestas aquí útiles, pero ninguna de ellas me dio una solución completa. Las mejores instrucciones que encontré estaban en la instrucción "instalando zsh" en el repositorio oh my zsh github de Robby Russel que puedes encontrar here
En la parte superior de la página tiene instrucciones generales para instalar zsh y luego instrucciones específicas para muchas plataformas diferentes. Puede desplazarse hacia la sección de Cygwin y seguir los pasos:
"La forma más fácil de cambiar el shell predeterminado es configurar la variable de entorno de usuario de SHELL. Busque" Editar variables de entorno para su cuenta "para abrir la ventana de variables de entorno, cree una nueva variable llamada" SHELL "y asígnele el valor" / usr / bin / zsh / "."
(En Windows 7: presione la tecla de Windows. Comience a escribir "entorno". Cuando aparezca, seleccione "Editar variables de entorno para su cuenta" y agregue la nueva variable como se indicó anteriormente).
Después de hacer esto, cerré y volví a abrir mi ventana de shell Cygwin y probé que funcionaba con echo $ SHELL. Resultado esperado: / bin / zsh o similar.
¡Espero que esto ayude!
Hay una respuesta en SuperUser que es aún más simple. Establecer la variable de entorno SHELL en Windows. Establézcalo en su shell preferido (por ejemplo, /bin/tcsh
) y los /bin/tcsh
recién lanzados deberían usarlo.
Para establecer variables de entorno:
- Vaya al panel de control "Sistema" (haga clic con el botón derecho en el menú Inicio y seleccione "Sistema")
- Haga clic en "Configuración avanzada del sistema" en la columna del lado izquierdo
- En la ventana "Propiedades del sistema" que aparece, haga clic en el botón "Variables de entorno ..."
- En el cuadro de "Variables de usuario" o "Variables de sistema" (dependiendo de si desea que el cambio afecte solo a usted o a todos los usuarios), haga clic en el botón "Nuevo ...".
- Escriba "SHELL" en el cuadro "Nombre de variable" y la ruta (relativa al sistema de archivos de Cygwin) a su shell preferido en el cuadro "Valor de variable".
- Haga clic en Aceptar en las tres ventanas abiertas para guardar los cambios.
No estoy seguro de qué tan ''apropiada'' sea esta solución, pero acabo de agregar /usr/bin/zsh; exit
/usr/bin/zsh; exit
al final de mi archivo .bashrc
. Puede sustituir /usr/bin/zsh
por la ruta a su shell de elección. Parece funcionar bien hasta ahora.
Quería comentar sobre la respuesta aceptada, pero no la suficiente.
Respecto a este método
$ mkpasswd > /etc/passwd
Si bien esto funciona para generar un archivo / etc / passwd, lo más probable es que esté instalando cygwin, y si su computadora pertenece a un dominio, mkpasswd puede agotarse e intentar consumir toda la lista de usuarios del dominio. Tenía un archivo de 500MB + / etc / passwd de exactamente esta condición, y cygwin ni siquiera comenzaría hasta que eliminara el archivo.
Recomiendo encarecidamente, si utiliza la ruta mkpasswd para usar el -c
, así que solo ingresa una entrada.
$ mkpasswd -c > /etc/passwd
En una máquina con un servicio cygwin compartido (suponiendo que tiene permisos de escritura)
$ mkpasswd -c >> /etc/passwd
Resuelvo aleatoriamente el mismo problema y ahora le proporciono mi solución.
0- Abrir cygwin
por mintty.exe
1- Crear el archivo de contraseña manualmente ( mkpasswd
)
$mkpasswd > /etc/passwd
2- Cambiar el shell predeterminado en el archivo de contraseña.
$vim /etc/passwd
user:*:1976XX:1971XX:U-user/user,S-1-5-21-XXXX:/home/user:/bin/fish
3- Reiniciar mintty.exe
Si está ejecutando Cygwin a través de ConEmu , la forma más sencilla es reemplazar la línea de comandos para ejecutar fish en lugar del shell predeterminado ( Configuración-> Inicio-> Tareas ): ""c:/cygwin64/bin/fish.exe" --login -i"
(cambie la ruta a su carpeta de cygwin como corresponda)
Vaya a c:/cygwin
o c:/cygwin64
(cualquiera que sea su directorio de inicio de cygwin) y edite cygwin.bat
. En lugar de
bash --login -i
escribe, por ejemplo,
rem bash --login -i
tcsh -l