Terminal CygWin no console remoto (SSH) não inicia no caminho $ HOME correto

Terminal CygWin no console remoto (SSH) não inicia no caminho $ HOME correto

eu instaleiCygWinv1.7.28.

O problema foi explicado rapidamente: Basicamente, ao iniciar um shell CygWin via login remoto, o$HOMEnão está onde deveria, com todas as consequências (ruins) derivadas disso. Os consoles locais funcionam bem.

E agora para odetalhes:

Se estiver 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 pelo correto$HOMEcom 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 logar via SSH (Servidor Bitvise SSHv6 instalado no Windows XP SP3) e repito o processo (mesmo usuário):

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

Agora oBash Shellnã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

Aquilo é:CygWininiciei o shell no diretório inicial do Windows, então não tenho minhas personalizações (.bashrc,.bash_profile... etc), como apelidos.

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 não consegui localizá-la.
Como eu poderia fazer para que meu console remoto iniciasse oBash Shellincluído emCygWinonde deveria?

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

No Bash Shell local:

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

No Bash Shell remoto (nada difere):

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 (mostrado 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 me enganei: o arquivo.bashrcno caminho inicial (onde quer que este caminho esteja) é lido como OK porCygWinao iniciar seu shell. Essa informação foi excluída agora.

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

Responder1

O problema em poucas palavras:Servidor Bitvise SSH(Windows) adiciona uma variável de ambiente (supostamente ilógica; parece não ser necessária)%LAR%isso é 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 (Massa, linha de comando clássica do GNUSSH... etc.). Pelo que pesquisei, o programa não possui essa funcionalidade. Vou continuar pesquisando.

Soluções alternativas:

  1. Ligar paraBash Shellatravés de um.cmdarquivo que primeiro exclui o%LAR%variável de ambiente. Algo como:

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

  2. Iniciando oBash Shellalterando o$HOMEvalor e reiniciá-lo:

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

  3. Apenas copiando todos os arquivos de configuração dec:\CygWin\home\%NOME DE USUÁRIO%parac:\Usuário\%NOME DE USUÁRIO%. Parece funcionar bem (alguém sabe de algum problema com esse método?).

Obrigado a @user1147688 (acima) pelas ideias e link para solução de umpergunta semelhante.

Responder2

Para mim, o problema não foi devido a uma variável de ambiente do Windows% HOME% que consegui excluir. 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%" do campoDiretório inicial do shell do terminal, mas isso não foi suficiente por si só.

informação relacionada