CygWin-Terminal in der Remote-Konsole (SSH) startet nicht beim richtigen $HOME-Pfad

CygWin-Terminal in der Remote-Konsole (SSH) startet nicht beim richtigen $HOME-Pfad

ich habe installiertCygWinVersion 1.7.28.

Das Problem schnell erklärt: Wenn Sie eine CygWin-Shell über einen Remote-Login starten,$HOMEist nicht dort, wo es sein sollte, mit allen daraus resultierenden (schlechten) Konsequenzen. Lokale Konsolen funktionieren einwandfrei.

Und nun zumEinzelheiten:

Wenn ich die GUI (Windows XP) verwende, mache ich Folgendes:

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

oder (praktisch genauso):

c:\CygWin\Cygwin.bat

Ich beginne an der richtigen$HOMEmit all meinen Konfigurationsdateien:

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

Aber wenn ich mich über SSH anmelde (Bitvise SSH-Serverv6 auf Windows XP SP3 installiert) und ich wiederhole den Vorgang (derselbe Benutzer):

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

Jetzt dieBash-Shellstartet nicht dort, wo es sollte:

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

Das ist:CygWinhabe die Shell in meinem Windows-Home-Verzeichnis gestartet, daher habe ich meine Personalisierungen nicht (.bashrc,.bash_profile... usw.), wie Aliase.

Vielleicht wird dieses seltsame Verhalten nur durch eine Art fehlende Umgebungsvariable verursacht (die auf der GUI vorhanden ist, aber nicht auf der Remote-Konsole), aber ich konnte sie nicht finden.
Wie kann ich meine Remote-Konsole dazu bringen, das zu starten?Bash-ShellEnthalten inCygWinwo sollte es sein?

  • EDIT: hier noch ein paar Zusatzdaten auf Anfrage:

In der lokalen Bash-Shell:

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

In der Remote-Bash-Shell (kein Unterschied):

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

Und dies ist der Inhalt von /etc/passwd (nur die Benutzerzeile „LuisRivas“ wird angezeigt):

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: In einem ersten Schreiben habe ich mich geirrt: die Datei.bashrcam Startpfad (wo auch immer dieser Pfad ist) wird OK gelesen vonCygWinbeim Starten der Shell. Diese Information wird jetzt gelöscht.

  • EDIT 3: Meine Tests wurden nur mit SSH-Remote-Logins durchgeführt, nicht mit Telnet. Daher stammt das Problem: genau aus einem bestimmten Verhalten des Bitvise SSH-Servers (lesen Sie die Antwort unten).

Antwort1

Das Problem in wenigen Worten:Bitvise SSH-Server(Windows) fügt eine (angeblich unlogische; anscheinend nicht benötigte) Umgebungsvariable hinzu%HEIM%das entspricht%HOMEPATH%.

Die Lösung: die Möglichkeit, die Umgebungsvariablen zu verwalten, die Bitvise SSH Server jedem SSH-Client hinzufügt (Kitt, klassische GNU-KommandozeileSSH... usw.). Soweit ich recherchiert habe, verfügt das Programm nicht über diese Funktionalität. Ich werde weitersuchen.

Problemumgehungen:

  1. Ruf denBash-Shellüber ein.cmdDatei, die zuerst die%HEIM%Umgebungsvariable. So etwas wie:

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

  2. Starten desBash-Shelldurch Ändern der$HOMEWert und Neustart:

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

  3. Kopieren Sie einfach alle Konfigurationsdateien vonc:\CygWin\home\%BENUTZERNAME%Zuc:\Benutzer\%BENUTZERNAME%. Scheint einwandfrei zu funktionieren (kennt jemand ein Problem mit dieser Methode?).

Vielen Dank an @user1147688 (oben) für Ideen und Link zur Lösung von einemähnliche Frage.

Antwort2

Bei mir lag das Problem nicht an einer Windows-Umgebungsvariable %HOME%, die ich löschen konnte. Im Dialogfeld „Umgebungsvariablen“ wurde keine %HOME%-Variable aufgeführt.

Stattdessen konnte ich das Problem in Bitvise lösen, indem ich in den erweiterten Einstellungen das Häkchen bei "Umgebungsvariablen zulassen" entfernte. Außerdem löschte ich "%HOME%" im FeldAnfängliches Terminal-Shell-Verzeichnis, aber das allein war nicht genug.

verwandte Informationen