2013-11-25 53 views
1

的想法是擺脫給出Cygwin的警告,一個連接到運行在窗戶框服務(sshd的)cygwin的守護程序:CYGWIN窗口cygrunsrv sshd服務器和MS-DOS風格的路徑檢測

有問題case:

> ssh -i <my private key> [email protected] "ls d://path//to//folder//" 
cygwin warning: 
    MS-DOS style path detected: d://path//to//folder// 
    Preferred POSIX equivalent is: /cygdrive/d/path/to/folder/ 
    CYGWIN environment variable option "nodosfilewarning" turns off this warning. 
    Consult the user's guide for more details about POSIX paths: 
    http://cygwin.com/cygwin-ug-net/using.html#using-pathnames 
[...] 

此警告可能會導致執行遠程命令以返回警告而不是'0'狀態代碼。

警告告訴我們要設置在Cygwin環境變量以下值:「nodosfilewarning」

的問題是,閹一個將其設置在下述任一位置,它不會進入遠程環境:

  • Windows用戶環境變量
  • Windows系統環境變量
  • 的〜/ .bashrc
  • 〜/ .profile文件
  • 的/ etc/.bashrc中
  • /etc/profile文件 等

測試用例:

> ssh -i <my private key> [email protected] "env | grep CYGWIN" 
CYGWIN=CYGWIN sshd 

cygwin環境變量從不包含正確的值,而不管你在哪裏設置它...

回答

2

問題來自於這樣一個事實,即sshd是r un與cygrunsrv.exe這是從CYGWIN終端呼叫中設置的ssh-host-config。它設置在安裝時對Cygwin環境變量的默認值,如果不與-c標誌修改... 或者如果從SSH-主機配置腳本執行查詢時它不被修改:

*** Query: Enter the value of CYGWIN for the deamon: [] CYGWIN sshd 

有關選項和詳細信息,請參閱./bin.ssh-host-config腳本。

--cygwin -c <options> Use \"options\" as value for CYGWIN environment var 

修改Cygwin環境變量沒有未安裝的服務,並重新進行安裝與-c標誌是不可能的,因爲據我所知!

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\sshd\Parameters\Environment CYGWIN 

修改條目,並追加在值的末尾nodosfilewarning將解決我們的問題: 修改一旦安裝服務的參數,如果編輯在這裏找到註冊表值然而,有可能!

我們可以驗證它確實工作再次重新執行測試用例:

> ssh -i <my private key> [email protected] "env | grep CYGWIN" 
CYGWIN=CYGWIN sshd nodosfilewarning 

從那時起,執行有問題的情況下,不應該再顯示警告信息!