2012-03-22 21 views
7

Después de iniciar el shell de Cygwin, que acaba de localizar en una casa equivocada dir:Cygwin cáscara no ejecuta Bashrc

[email protected] ~ 
$ pwd 
/cygdrive/c/Users/xfire 

Pero lo que solía ser/home/Xfire

[email protected] /etc 
$ cat passwd | grep xfire 
xfire:unused:22773:10513:U-CORP\xfire,S-1-5-21-527237240-725345543-682003330-12773:/home/xfire:/bin/bash 

Y el .bashrc en/home/xfire no se ejecutó, incluso lo copié en/cygdrive/c/Users/xfire, ¡pero tampoco funciona!

+0

Mira esto: http://www.cygwin.com/ml/cygwin/2002-01/msg00826.html – jahroy

+0

Algunos programas agregan un entorno "INICIO" en el registro de Windows y establecen el valor en "C: \ Users" \ xfire ", es por eso que cygwin toma ese directorio como el hogar. http://cygwin.com/faq-nochunks.html –

+0

Uso inútil del gato: 'grep xfire passwd'. – Jens

Respuesta

6

Algunos programas agregan un entorno "INICIO" en el registro de Windows y establecen el valor en "C: \ Users \ xfire", es por eso que cygwin toma ese directorio como el hogar. cygwin.com/faq-nochunks.html

+0

Lástima que esta fue su propia respuesta y, por lo tanto, no fue superada cuando la seleccionó como la respuesta correcta, porque las dos respuestas mejor votadas son esencialmente inútiles si la variable HOME no está configurada de la forma esperada. –

+0

Bueno, esto explica por qué sucede, pero no CÓMO resolver el problema ... – bgusach

+0

Quiero decir, sé que funciona si lo elimino, pero ¿qué ocurre si aún INICIO en Windows? – bgusach

31

En cygwin, añado esto a mi ~/.bash_profile:

. ~/.bashrc 
+3

Esto lo resolvió para mí. Quizás puedas aclarar qué está pasando y por qué Evans Y. quiere aceptar su respuesta. –

+1

Para otros que pueden ser curiosos por qué. El programa de terminal por defecto de cygwin es mintty. Si marca las propiedades del icono que utiliza para iniciar el terminal, encontrará que termina con un "-" solitario. Esto le dice a Mintty que ejecute el shell como un shell de inicio de sesión. Bash a su vez solo ejecuta .bashrc si el shell ** no ** es un shell de inicio de sesión. Para los shells de inicio de sesión, solo ejecuta .bash_profile (o .profile). En muchos otros unixes, los programas de terminal inician el shell como un shell que no es de inicio de sesión, por lo que ejecutan el .bashrc de forma predeterminada en lugar de .bash_profile. – Aner

1

También puede también establecer la variable BASH_ENV, por ejemplo, BASH_ENV = 'C: \ DOCUME ~ 1 \ dwyttenb \ .bashrc'

3

En mi versión de cygwin encontré que sólo estaba siendo ~/.profile execueted por lo añaden

if [ -e "${HOME}/.bash_profile" ]; then 
    source "${HOME}/.bash_profile" 
fi 

al archivo .profile. Mi archivo .bash_profile contiene otra prueba para .bashrc y la ejecuta desde adentro. También agregué las siguientes dos líneas a mi archivo .bashrc.

export BASH_ENV="${HOME}/.profile" 
export ENV="${HOME}/.profile" 

La primera de ellas le permite .profile es ejecutado en terminales no interactivas y la segunda asegura el fichero es ejecutado en terminales POSIX. Encontré una explicación muy útil de lo que se ejecuta y cuándo en el Bash Reference Manual.

En su caso no ayudaría ya que tiene un problema con el valor de su variable de entorno HOME pero esta página aparece bastante arriba en la lista al buscar este problema.

Cuestiones relacionadas