Cygwin .bashrc não sendo fonte porque cygwin iniciando no Windows home

8

OBSERVAÇÃO: veja minha segunda edição abaixo para uma atualização sobre o problema.

O Cygwin estava funcionando bem para mim até a semana passada. Agora .bashrc não está sendo originado. Eu devo ter instalado algo ou mudado alguma coisa, mas não me lembro exatamente o que causou o problema. Quando inicio o Cygwin, estou na minha casa do Windows e nenhum dos meus aliases funciona. Eu tenho que manualmente fonte .bashrc. O seguinte é meu Cygwin.bat:

@echo off

C:
chdir C:\cygwin\bin

set CYGWIN=tty notitle glob

bash --login -i

Alguma idéia?

EDIT: Meu .bash_profile contém o seguinte,

# source the users bashrc if it exists
if [ -f "${HOME}/.bashrc" ] ; then
  source "${HOME}/.bashrc"
fi

EDIT2: IMPORTANTE! Quando iniciei o Cygwin, ele inicia na minha pasta pessoal do Windows. Eu tentei colocar o meu .bash_profile e .bashrc nesta pasta e eles foram adquiridos corretamente! Isso significa que o problema foi reduzido para descobrir por que o Cygwin é iniciado na pasta base do Windows e não na pasta principal normal do Cygwin.

EDIT3: Resultados da execução do grep Gulshan / etc / passwd /

$ grep Gulshan /etc/passwd
Administrator:unused:500:513:U-Gulshan-HP\Administrator,S-1-5-21-1235613160-4193452482-2032876723-500:/home/Administrator:/bin/bash
Guest:unused:501:513:U-Gulshan-HP\Guest,S-1-5-21-1235613160-4193452482-2032876723-501:/home/Guest:/bin/bash
Gulshan:unused:1000:513:U-Gulshan-HP\Gulshan,S-1-5-21-1235613160-4193452482-2032876723-1000:/home/Gulshan:/bin/bash
    
por gsingh2011 29.02.2012 / 08:02

3 respostas

7

A FAQ do Cygwin explica como $HOME está definido:

When starting Cygwin from Windows, HOME is determined as follows in order of decreasing priority:

  • HOME from the Windows environment, translated to POSIX form.
  • The entry in /etc/passwd
  • /home/USERNAME

When using Cygwin from the network (telnet, ssh,...), HOME is set from /etc/passwd.

If your HOME is set to a value such as /cygdrive/c, it is likely that it was set in Windows. Start a DOS Command Window and type set HOME to verify if this is the case.

Access to shared drives is often restricted when starting from the network, thus Domain users may wish to have a different HOME in the Windows environment (on shared drive) than in /etc/passwd (on local drive). Note that ssh only considers /etc/passwd, disregarding HOME.

Meu melhor palpite é que você errou o arquivo /etc/passwd . (O diretório base do Windows é %USERPROFILE% , não %HOME% .)

O que grep USERNAME /etc/passwd imprime (substituindo USERNAME pelo seu nome de usuário)?

    
por 01.03.2012 / 02:05
1

Se você tiver um .profile ou .bash_profile, que é originado em shells de login, e você obtém um shell de login desde que você passou --login . Se você fonte .profile, então bash não source .bashrc.

Eu tentaria colocar:

[ -f $HOME/.bashrc ] && source $HOME/.bashrc

no seu .profile, veja se isso ajuda. Seu .bashrc ainda deve ser originado, como é normal, em outras invocações de shell de não-login.

E não passe -i para bash; você não precisa disso. Bash tipo de hacks que, finge que você deu -i na linha de comando.

    
por 01.03.2012 / 00:29
1

Eu experimentei o mesmo comportamento - provavelmente depois de ter o git (Windows) instalado.

Na configuração do sistema, encontrei a variável de usuário HOME = C: \ Users \ me e redefino isso para HOME = D: \ home

    
por 10.10.2014 / 09:51