%20%E4%B8%AD%E7%9A%84%20CygWin%20%E7%B5%82%E7%AB%AF%E6%9C%AA%E5%BE%9E%E6%AD%A3%E7%A2%BA%E7%9A%84%20%24HOME%20%E8%B7%AF%E5%BE%91%E5%95%9F%E5%8B%95.png)
我已經安裝了賽格溫v1.7.28。
問題很快就得到了解釋:基本上,當透過遠端登入啟動 CygWin shell 時,$HOME不是它應該在的地方,及其所有衍生的(壞的)後果。本機控制台執行正常。
現在對於細節:
如果在 GUI (Windows XP) 上我這樣做:
c:\CygWin\bin\bash.exe --login -i
或(實際上以同樣的方式):
c:\CygWin\Cygwin.bat
我從正確的地方開始$HOME與我所有的設定檔:
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
但如果我透過 SSH 登入(Bitvise SSH 伺服器v6 安裝在 Windows XP SP3 上),我重複這個過程(同一用戶):
c:\CygWin\bin\bash.exe --login -i
現在重擊外殼沒有從應該開始的地方開始:
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
那是:賽格溫在我的 Windows 主目錄中啟動 shell,因此我沒有個人化設定(.bashrc,.bash_設定檔....等),如別名。
也許這種奇怪的行為只是由某種缺失的環境變數引起的(存在於 GUI 上,但不存在於遠端控制台上),但我無法找到它。
我怎麼能讓我的遠端控制台啟動重擊外殼包括在賽格溫應該在哪裡?
- 編輯:這裡根據要求提供一些額外數據:
在本地 Bash Shell 中:
LuisRivas@portatilacer ~
$ id
uid=1004(LuisRivas) gid=513(Ninguno) grupos=513(Ninguno),0(root),544(Administradores),545(Usuarios)
在遠程 Bash Shell(沒有什麼不同):
LuisRivas@portatilacer ~
$ id
uid=1004(LuisRivas) gid=513(Ninguno) grupos=513(Ninguno),0(root),544(Administradores),545(Usuarios)
這是 /etc/passwd 的內容(僅顯示使用者「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)]
編輯2:在第一次寫作中我錯了:文件.bashrc在起始路徑(無論該路徑在哪裡)被讀取正確賽格溫當啟動它的外殼時。該資訊現已刪除。
編輯 3:我的測試僅針對 SSH 遠端登入進行,而不是 Telnet。問題就來了:正是來自 Bitvise SSH 伺服器的某些行為(請閱讀下面的回應)。
答案1
簡單來說一下問題:Bitvise SSH 伺服器(Windows)增加一個(據說不合邏輯;似乎不需要)環境變數%家%等於%主路徑%。
解決方案:管理 Bitvise SSH 伺服器新增至每個 SSH 用戶端的環境變數的可能性(油灰, 經典的 GNU 命令列SSH... ETC)。據我研究,該程式沒有這個功能。我會繼續尋找。
解決方法:
致電重擊外殼透過一個.cmd首先刪除的文件%家%環境變數。就像是:
@設定HOME=
@c:\CygWin\bin\bash.exe --login -i開始重擊外殼透過改變$HOME值,然後重新啟動它:
c:\CygWin\bin\bash.exe --login -i -c "export HOME=/home/%USERNAME%;cd /home/%USERNAME%; exec /bin/bash"
只需複製所有配置文件c:\CygWin\home\%USERNAME%到c:\用戶\%用戶名%。似乎工作正常(有人知道這種方法的一些問題嗎?)。
感謝@user1147688(上圖)提供的想法和解決方案的鏈接類似的問題。
答案2
對我來說,問題不是由於我能夠刪除的 Windows 環境變數 %HOME% 造成的。 “環境變數”對話方塊中未列出 %HOME% 變數。
相反,我可以透過取消選取進階設定中的「允許環境變數」來解決 Bitvise 中的問題。我還刪除了該字段中的“%HOME%”初始終端 shell 目錄,但這本身還不夠。