Terminal CygWin no console remoto (SSH) não está iniciando no caminho $ HOME correto

1

Eu instalei o CygWin v1.7.28.

O problema foi rapidamente explicado : Basicamente, ao iniciar um shell CygWin via login remoto, o $ HOME não é onde deveria, com todas as conseqüências derivadas (ruins) de isto. Consoles locais executa OK.

E agora para os detalhes :

Se na GUI (Windows XP) eu faço:

c:\CygWin\bin\bash.exe --login -i

ou (da mesma forma, praticamente):

c:\CygWin\Cygwin.bat

Eu começo no $ HOME correto com todos os meus arquivos de configuração:

LuisRivas@portatilacer ~
$ pwd
/home/LuisRivas

LuisRivas@portatilacer ~
$ ls .* -la
-rw-------  1 LuisRivas Ninguno  108 mar  3 14:34 .bash_history
-rwxr-xr-x  1 LuisRivas Ninguno 1494 mar  3 03:00 .bash_profile
-rwxr-xr-x  1 LuisRivas Ninguno 6127 mar  3 14:28 .bashrc
-rwxr-xr-x  1 LuisRivas Ninguno 1919 mar  3 03:00 .inputrc
-rwxr-xr-x  1 LuisRivas Ninguno 1236 mar  3 03:00 .profile

$ echo $HOME
/home/LuisRivas

Mas se eu fizer login via SSH ( Servidor Bitvise SSH v6 instalado no Windows XP SP3) e eu repetir o processo (mesmo usuário ):

c:\CygWin\bin\bash.exe --login -i

Agora, o Bash Shell não começa onde deveria:

LuisRivas@portatilacer ~
$ echo $HOME
/cygdrive/c/Documents and Settings/LuisRivas

LuisRivas@portatilacer ~
$ pwd
/cygdrive/c/Documents and Settings/LuisRivas

LuisRivas@portatilacer ~
$ ls .* -la
-rw-------+ 1 LuisRivas       Ninguno 197 mar  3 14:36 .bash_history

.:
total 1211
drwxrwx---+ 1 Administradores SYSTEM       0 mar  3 14:30 .
drwxrwxr-x+ 1 Administradores SYSTEM       0 mar  1 04:06 ..
-rw-------+ 1 LuisRivas       Ninguno    197 mar  3 14:36 .bash_history
drwx------+ 1 LuisRivas       Ninguno      0 mar  3 14:12 Configuración local
drwx------+ 1 LuisRivas       Ninguno      0 dic 25 15:41 Cookies
drwx------+ 1 LuisRivas       Ninguno      0 mar  3 14:17 Datos de programa
drwx------+ 1 LuisRivas       Ninguno      0 dic 25 13:56 Entorno de red
drwx------+ 1 LuisRivas       Ninguno      0 dic 25 13:56 Escritorio
drwx------+ 1 LuisRivas       Ninguno      0 mar  3 14:12 Favoritos
drwx------+ 1 LuisRivas       Ninguno      0 mar  3 14:02 IETldCache
drwx------+ 1 LuisRivas       Ninguno      0 dic 25 13:56 Impresoras
drwx------+ 1 LuisRivas       Ninguno      0 dic 25 13:56 Menú Inicio
drwx------+ 1 LuisRivas       Ninguno      0 mar  3 14:12 Mis documentos
-rwx------+ 1 LuisRivas       Ninguno 786432 mar  3 14:17 NTUSER.DAT
-rwx------+ 1 LuisRivas       Ninguno   1024 mar  3 14:34 NTUSER.DAT.LOG
-rwxrwx---+ 1 Administradores SYSTEM     192 mar  3 14:03 ntuser.ini
drwx------+ 1 LuisRivas       Ninguno      0 dic 25 15:33 Plantillas
drwx------+ 1 LuisRivas       Ninguno      0 mar  3 14:12 Reciente
drwx------+ 1 LuisRivas       Ninguno      0 mar  3 14:12 SendTo

Ou seja: CygWin iniciou o shell no meu diretório pessoal do Windows, portanto não tenho minhas personalizações ( .bashrc , .bash_profile ... etc), como aliases.

Talvez esse comportamento estranho seja causado apenas por algum tipo de variável de ambiente ausente (que existe na GUI, mas não no console remoto), mas eu não consegui localizá-lo.
Como eu poderia fazer para que meu console remoto iniciasse o Bash Shell incluído no CygWin onde deveria?

  • EDIT: aqui alguns dados extras sob solicitação:

Na Bash Shell local:

LuisRivas@portatilacer ~
$ id
uid=1004(LuisRivas) gid=513(Ninguno) grupos=513(Ninguno),0(root),544(Administradores),545(Usuarios)

Na Bash Shell remota (nada é diferente):

LuisRivas@portatilacer ~
$ id
uid=1004(LuisRivas) gid=513(Ninguno) grupos=513(Ninguno),0(root),544(Administradores),545(Usuarios)

E este é o conteúdo de / etc / passwd (mostrada apenas a linha do usuário "LuisRivas"):

LuisRivas@portatilacer ~
$ cat /etc/passwd
[Lines not needed (I think)]
LuisRivas:unused:1004:513:U-PORTATILACER\LuisRivas,S-1-5-21-789336058-1957994488-1417001333-1004:/home/LuisRivas:/bin/bash
[Lines not needed (I think)]
  • EDIT 2: Numa primeira escrita eu estava errado: o arquivo .bashrc no caminho inicial (onde quer que este caminho seja) é lido OK por CygWin ao iniciar seu shell. Essa informação é apagada agora.

  • EDIT 3: Meus testes foram feitos apenas em logins remotos do SSH, não no Telnet. Então veio o problema: precisamente de algum comportamento do Bitvise SSH Server (leia a resposta abaixo).

por Sopalajo de Arrierez 03.03.2014 / 16:54

2 respostas

1

O problema em poucas palavras: Servidor SSH Bitvise (Windows) adiciona um (supostamente ilógico; parece não ser necessário ) variável de ambiente % HOME% que é igual a % HOMEPATH% .

A solução: a possibilidade de gerenciar as variáveis de ambiente que o Bitvise SSH Server adiciona a cada cliente SSH ( Putty , linha de comando GNU clássica SSH ... etc) . Desde que pesquisei, o programa não tem essa funcionalidade. Eu continuarei procurando.

Soluções alternativas:

  1. Chame o Bash Shell por meio de um arquivo .cmd que primeiro exclui a variável de ambiente % HOME% . Algo como:

    @ set HOME =
    @ c: \ CygWin \ bin \ bash.exe --login -i

  2. Iniciando o Bash Shell alterando o valor de $ HOME e reiniciando-o:

    c: \ CygWin \ bin \ bash.exe --login -i -c "exportar HOME = / home /% USERNAME%; cd / home /% nome_do_usuário%; exec / bin / bash"

  3. Copiando todos os arquivos de configuração de c: \ CygWin \ home \% USERNAME% para c: \ User \% USERNAME% . Parece funcionar OK (alguém sabe sobre algum problema com este método?).

Agradecimentos a @ user1147688 (acima) por idéias e link para a solução de um pergunta semelhante .

    
por 04.03.2014 / 16:18
0

Para mim, o problema não se deveu a uma variável de ambiente do Windows% HOME% que consegui eliminar. Nenhuma variável% HOME% foi listada na caixa de diálogo Variáveis Ambientais.

Em vez disso, consegui resolver o problema no Bitvise desmarcando "Permitir variáveis ambientais" nas configurações avançadas. Também apaguei "% HOME%" no campo Diretório de shell de terminal inicial , mas isso não foi suficiente por si só.

    
por 05.11.2014 / 22:13