Saltar al contenido

¿Cómo puedo cambiar mi carpeta de inicio Cygwin después de la instalación?

Abel, parte de este staff, nos hizo el favor de redactar este artículo porque domina perfectamente este tema.

Solución:

A partir de Cygwin 1.7.34, la forma recomendada de hacer esto es agregar un db_home ajuste a /etc/nsswitch.conf. Un deseo común al hacer esto es hacer que su directorio de inicio de Cygwin sea igual al directorio de su perfil de usuario de Windows. Esta configuración hará eso:

db_home: windows

O equivalente:

db_home: /%H

Debe utilizar la última forma si desea alguna variación en este esquema, como segregar sus archivos de inicio Cygwin en un subdirectorio de su directorio de perfil de usuario de Windows:

db_home: /%H/cygwin

Hay varios otros esquemas alternativos para windows opción más varias otras % tokens que puedes usar en lugar de %H o además de él. Ver el nsswitch.conf descripción de la sintaxis en la Guía del usuario de Cygwin para obtener más detalles.

Si instaló Cygwin antes de 1.7.34 o ha ejecutado su mkpasswd utilidad para que tenga una /etc/passwd archivo, puede cambiar su directorio de inicio Cygwin editando la entrada de su usuario en ese archivo. Su directorio de inicio es el penúltimo elemento en la línea de su usuario en /etc/passwd

De cualquier manera que lo haga, esto hace que HOME variable de entorno que se establecerá durante el inicio del shell².

Consulte este artículo de preguntas frecuentes para obtener más información sobre el tema.


Notas a pie de página:

  1. Considere mudarse /etc/passwd y /etc/group fuera del camino para utilizar el nuevo mecanismo basado en SAM / AD en su lugar.

  2. Si bien es posible configurar simplemente %HOME% a través del Panel de control, se desaconseja oficialmente. No solo anula sin ceremonias los mecanismos anteriores, sino que no siempre funciona, como cuando se ejecutan scripts de shell a través de cron.

Cygwin 1.7.34+

Para aquellos que usan Cygwin 1.7.34 o superior Cygwin admite la configuración de cómo obtener el directorio de inicio, el shell de inicio de sesión y la información de gecos en /etc/nsswitch.conf. Esto se detalla en la sección de la Guía del usuario de Cygwin:

  • Nombres de usuario de Cygwin, directorios de inicio, shells de inicio de sesión

Si ha creado previamente un /etc/passwd o /etc/group archivo, querrá eliminarlos y configurar Cygwin utilizando el nuevo modelo de seguridad de Windows para las asignaciones POSIX.

[[ -f /etc/passwd ]] && mv /etc/passwd /etc/passwd.bak
[[ -f /etc/group ]] && mv /etc/group /etc/group.bak

los /etc/nsswitch.conf archivo db_home: La configuración define cómo Cygwin obtiene el directorio de inicio del usuario. La configuración predeterminada para db_home: es

db_home: /home/%U

Entonces, de manera predeterminada, Cygwin simplemente establece el directorio de inicio en /home/$USERNAME. Sin embargo, puede cambiar eso para que apunte a cualquier otra ruta personalizada que desee. Los caracteres comodín admitidos son:

  • %u El nombre de usuario de Cygwin (que es u minúscula).
  • %U El nombre de usuario de Windows (que es la U mayúscula).
  • %D Dominio de Windows en estilo NetBIOS.
  • %H Directorio de inicio de Windows en estilo POSIX. Tenga en cuenta que, para el db_home: , esto solo tiene sentido justo después de la barra anterior, como en db_home: /%H/cygwin
  • %_ Dado que el espacio y los caracteres TAB se utilizan para separar los esquemas, se debe dar un espacio en el nombre del archivo como %_ (eso es un subrayado).
  • %% Un carácter de porcentaje.

En lugar de una ruta, puede especificar uno de los cuatro esquemas de ruta con nombre que están predefinidos.

  1. windows El directorio de inicio del usuario se establece en el mismo directorio que se utiliza como directorio de inicio de Windows, por lo general algo parecido a %USERPROFILE% o C:Users$USERNAME. Por supuesto, Cygwin convierte el directorio de Windows al estilo POSIX.

  2. cygwin Solo AD: el directorio de inicio del usuario se establece en la ruta POSIX proporcionada en cygwinHome attribute de la clase auxiliar cygwinUser. Consulte también la sección denominada “El esquema cygwin”.

  3. unix Solo AD: el directorio de inicio del usuario se establece en la ruta POSIX proporcionada en unixHomeDirectory attribute de la clase auxiliar posixAccount. Consulte también la sección denominada “El esquema de Unix”.

  4. desc El directorio de inicio del usuario se establece en la ruta POSIX proporcionada en la configuración similar a XML home = “…” en la descripción del usuario attribute en SAM o AD. Consulte la sección llamada “El esquema desc” para obtener una descripción detallada.

Lo siguiente hará que el directorio de inicio del usuario en Cygwin sea el mismo que se utiliza para el directorio de inicio de Windows.

db_home: windows

Cygwin 1.7.33 o anterior

Para aquellos que usan Cygwin 1.7.33 o anterior, actualice a la última versión Cygwin y elimine los usados ​​anteriormente /etc/passwd y /etc/group archivos y, a continuación, consulte los pasos anteriores.

De lo contrario, siga estos pasos anteriores a continuación.

En primer lugar, configure una variable de entorno de Windows para HOME que apunte a su perfil de usuario:

  1. Abierto Sistema sobre el Panel de control
  2. Sobre el Avanzado haga clic en la pestaña Variables de entorno (hacia abajo)
  3. En el área de Variables de usuario, haga clic en “Nuevo …”
  4. Para el nombre de la variable, ingrese HOME
  5. Para Valor variable, ingrese %USERPROFILE%
  6. Haga clic en Aceptar en todos los cuadros de diálogo abiertos para aplicar esta nueva configuración

Ahora vamos a actualizar Cygwin. /etc/passwd archivo con Windows %HOME% variable que acabamos de crear. Inicios de sesión de shell e inicios de sesión remotos a través de ssh confiará en /etc/passwd para decirles la ubicación del usuario $HOME sendero.

En el símbolo del sistema de Cygwin bash, escriba lo siguiente:

cp /etc/passwd /etc/passwd.bak
mkpasswd -l -p $(cygpath -H)  > /etc/passwd 
mkpasswd -d -p $(cygpath -H)  >> /etc/passwd 

los -d switch le dice a mkpasswd que incluya a los usuarios de DOMINIO, mientras que -l es solo generar usuarios de máquinas LOCALES. Esto es importante si está utilizando una PC en el trabajo donde la información del usuario se obtiene de un controlador de dominio de Windows.

Ahora, también puede hacer lo mismo con los grupos, aunque esto no es necesario a menos que utilice una computadora que sea parte de un dominio de Windows. Cygwin lee la información del grupo de las bases de datos de la cuenta de Windows, pero puede agregar un /etc/group archivo si su máquina a menudo se desconecta de su controlador de dominio.

En el indicador de Cygwin bash, escriba lo siguiente:

cp /etc/group /etc/group.bak
mkgroup -l > /etc/group 
mkgroup -d >> /etc/group 

Ahora, salga de Cygwin y vuelva a iniciarlo. Debería encontrar que su ruta de INICIO apunta a la misma ubicación que su perfil de usuario de Windows, es decir /cygdrive/c/Users/username

Hice algo bastante simple. No quería cambiar la variable de entorno de Windows 7. Así que edité directamente el archivo Cygwin.bat.

@echo off
SETLOCAL
set HOME=C:pathtohome
C:
chdir C:appscygwinbin
bash --login -i
ENDLOCAL

Esto simplemente inicia el shell local con este directorio de inicio; eso es lo que quería. No voy a acceder de forma remota a esto, así que esto funcionó para mí.

Si te sientes estimulado, tienes la habilidad dejar una noticia acerca de qué le añadirías a esta crónica.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *