Cambiando el HOME para Cygwin

Cambiando el HOME para Cygwin

Estoy intentando cambiar el directorio de inicio de Cygwin en una computadora en el trabajo. Nuestros directorios de inicio están asignados a un recurso compartido de red de forma predeterminada. Esto parece causar cierta confusión a Cygwin, ya que creó un directorio en mi escritorio que sigue la misma ruta que el recurso compartido de red, algún otro prefijo basado en dónde abro cygwin.

Si abro Cygwin desde el acceso directo predeterminado creado durante la instalación:

$ echo $HOME
/cygdrive/c/Users/shaun/Desktop/SERVER/USERS:USERS/SHAUN

Si abro Cygwin desde PowerShell:

$ echo $HOME
/usr/bin/SERVER/USERS:USERS/SHAUN

Preferiría tener mi directorio de inicio en un directorio de programas locales que configuré para administrar los programas yo mismo. Como esto:

/cygdrive/c/users/shaun/apps/cygwin/home/shaun

La forma preferida de hacer esto,según lo recomendado por cygwin, es hacer una entrada en /etc/nsswitch.conf. Esto parece que debería hacerlo:

db_home: unix /%H/Apps/cygwin/home/shaun

Todos los cambios que hice en este archivo parecieron ignorarse. Reinicio el terminal, e incluso cuando intencionalmente estropeo la sintaxis no obtengo errores. Algunas de las opciones que probé y fallaron:

db_home: /cygdrive/c/users/shaun/apps/cygwin/home/shaun
db_home: /%H/Apps/cygwin/home/shaun
db_home: unix /%H/Apps/cygwin/home/shaun
db_home: cygwin desc
db_home: cygwin /path /%H/Apps/cygwin/home/shaun

Reinicié el proceso Cygwin después de cada intento. También intenté cambiar la db_shellopción a /bin/shsolo como experimento, pero el shell no cambió.

Preguntas anteriores en StackExchange sugirieron cambiar el /etc/passwdarchivo. Pude hacer que esto funcionara solo después de comentar un bloque de código /etc/profileque creaba automáticamente el directorio INICIO. Y luego, después de un tiempo, volvió al antiguo HOGAR.

¿Hay algo que me falta en el /etc/nsswitch.confarchivo? Parece que sería una forma sencilla y conveniente de establecer configuraciones personalizadas. Las alternativas parecen trucos obsoletos que Cygwin no recomienda, pero si me equivoco, hágame saber qué método prefiere.

Mi actual/etc/nsswitch.conf

    # /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
    db_home: /cygdrive/c/users/shaun/apps/cygwin/home/shaun
    # db_shell: /bin/bash
    # db_gecos: <empty>

Respuesta1

db_home: unix /%H/Apps/cygwin/home/shaun

La página del manual a la que hace referencia le indica que utiliceunix oa /path, no ambos juntos.

A menos que su administrador de AD haya establecido el unixHomeDirectoryvalor para cada usuario que usa Cygwin en su organización, no desea utilizar unixnada, sino la ruta.

Sugeriría una modificación de lo que has dado:

db_home: /%H/Apps/cygwin/home/%u

Eso permitirá que la configuración funcione para varios usuarios en la misma máquina.

Todos los cambios que hice en este archivo parecieron ignorarse.

Hay dos formas de anular la nsswitch.confconfiguración:

  1. Ejecute la utilidad Cygwin mkpasswd, que genera /etc/passwdy /etc/groupdesde las bases de datos de información de usuario SAM o AD. Este mecanismo esobsoletoy solo debe usarse en instalaciones heredadas de Cygwin o para fines especiales.

  2. Establezca la %HOME%variable de entorno en el nivel del sistema Windows.

    Esto no sólo anula a Cygwin, sino que lo hace sólo bajo ciertas circunstancias, razón por la cual esno recomendado.

    Verifique los conjuntos de variables de entorno del usuario y de todo el sistema para asegurarse de que no le esté sucediendo a usted.

Preguntas anteriores en StackExchange sugirieron cambiar el archivo /etc/passwd

Debería eliminarlo y utilizar el sistema Active Directory de su sitio, controlando /etc/nsswitch.confcómo Cygwin interactúa con él.

Respuesta2

Cuando tuve problemas con un directorio de inicio montado de forma remota, utilicé la función "asignar unidad de red", por lo que My Documentsme asigné a una letra de unidad, por ejemplo U:\. Luego U:\se convierte en un alias para My Documents. Luego edité /etc/passwdpara que los ~puntos /cygdrive/uy luego todo funcionara.

Esto también se puede hacer con directorios locales, pero luego substse debe usar el comando cmd.exepara crear el alias en lugar de "Map Network Drive". Mapear la unidad de red es permanente, pero substno lo es, por lo que se debe colocar en la Startcarpeta de Windows un script que lo haga en cada arranque.

información relacionada