%20startet%20nicht%20beim%20richtigen%20%24HOME-Pfad.png)
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:
Ruf denBash-Shellüber ein.cmdDatei, die zuerst die%HEIM%Umgebungsvariable. So etwas wie:
@ set HOME=
@ c:\CygWin\bin\bash.exe --login -iStarten 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"
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.