termux omf for shell cygwin fish

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:

  1. Vaya al panel de control "Sistema" (haga clic con el botón derecho en el menú Inicio y seleccione "Sistema")
  2. Haga clic en "Configuración avanzada del sistema" en la columna del lado izquierdo
  3. En la ventana "Propiedades del sistema" que aparece, haga clic en el botón "Variables de entorno ..."
  4. 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 ...".
  5. 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".
  6. 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