2012-04-10 31 views
19

Como estoy desarrollando Ruby on Rails en una máquina de Windows, necesito usar cygwin para emular el símbolo del sistema de Unix. El problema ahora es que cada vez que abro el terminal cygwin, me llevo a este directorio C:/cygwin/home/my_user_name en lugar del directorio de usuario predeterminado C:/Users/my_user_name.Hacer el directorio de inicio de cygwin al perfil de usuario de Windows

¿Alguien sabe cómo hacer que el directorio principal predeterminado de cygwin sea el directorio C:/Users/my_user_name predeterminado de Windows?

He revisado varias soluciones en Desbordamiento de pila, pero ninguna de ellas funciona, el "mkpasswd" tampoco funciona. ¿Tiene esto algo que ver con la versión de mi sistema operativo, o tal vez con otra cosa?

Estoy usando cygwin 1.7.5 y mi sistema operativo es Windows 7 Business de 64 bits.

+0

si esto he trasladado a superusuario? –

Respuesta

18
mount -f "$USERPROFILE" ~ 
mount -m > /etc/fstab 

relacionada

Safely change home directory

+0

Hola, gracias por la ilustración, pero ¿puedes explicar un poco más sobre este tema? – lixiang

+0

FYI He editado mi pregunta relacionada (que parece haber votado negativamente y haber marcado para el cierre como "incierta"). –

8

pude cambiar la mía, simplemente definiendo la variable de entorno HOME en Windows para C:\Users\MyUsername. Cuando comienzo Cygwin, ahora parece allí. Esto tiene el beneficio añadido de causar Emacs en Win32 regular (es decir, no a través de Cygwin) para comenzar en el lugar correcto en lugar de en C:\Users\MyUsername\AppData\Roaming (y buscando así .emacs y .emacs.d allí)

+0

Cuando hago eso, Cygwin me devuelve esto: mkdir: no puedo crear el directorio '/ cygdrive/c/ProgramData/Microsoft/Windows/Menú de Inicio/Programas/Cygwin/\ 'C:': Permiso denegado /cygdrive/c/ProgramData/Microsoft/Windows/Menú de Inicio/Programas/Cygwin/'C:/Users/CMCDragonkai' no se pudo crear. Configurando HOME en/tmp. – CMCDragonkai

+0

funcionó para mí, gracias. – Robeezy

+0

No olvide cerrar la sesión/iniciar sesión para que esta variable de entorno surta efecto. – Apteryx

6

Según Cygwin documentation se puede editar /etc/nsswitch.conf y cambiar el parámetro de dehb_home.

  • % u - El nombre de usuario de Cygwin (eso es u en minúscula).
  • % U - El nombre de usuario de Windows (que es U mayúscula).
  • % D - Dominio de Windows en estilo NetBIOS.
  • % H - Directorio de inicio de Windows en estilo POSIX. Tenga en cuenta que, para la configuración db_home:
  • % _ - Dado que los caracteres espacio y TAB se utilizan para separar los esquemas, un espacio en el nombre de archivo se debe dar como% _ (que es un guión bajo).
  • %% - Un carácter por ciento.

Aquí es el contenido de mi /etc/nsswitch.conf para crear un directorio home en cada directorio de usuario

# /etc/nsswitch.conf 
# 
# This file is read once by the first process in a Cygwin process tree. 
# To pick up changes, restart all Cygwin processes. For a description 
# see https://cygwin.com/cygwin-ug-net/ntsec.html#ntsec-mapping-nsswitch  
# Defaults: 
# passwd: files db 
# group: files db 
# db_enum: cache builtin 
# db_home: /home/%U <------ This was the default setting 
db_home: /%H/home # db_home: /home/%U <- This was the default setting 
# db_shell: /bin/bash 
# db_gecos: <empty> 

Reiniciar cualquier proceso Cygwin

+1

Tenga en cuenta que esto se anulará si se establece 'HOME' (como sugiere Hut8).Prefiero esta solución en general, pero he encontrado un [extraño caso en el que algo * else * parece anularlo] (http://stackoverflow.com/q/41152489/1858225), así que cambié a la solución de estableciendo la variable de entorno de Windows. –

+1

¡Esto parece ser una solución más limpia, debería ser aceptada en su lugar! –

Cuestiones relacionadas