这个想法是当一个人连接到在windows box(sshd)中作为服务运行的cygwin守护程序时,取消给出的CYGWIN警告:
有问题的案例:
> ssh -i <my private key> me@server "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”
问题在于,在以下任何地方设置它,它不会进入远程环境:
测试用例:
> ssh -i <my private key> me@server "env | grep CYGWIN"
CYGWIN=CYGWIN sshd
无论您在何处设置它,CYGWIN环境变量都不会包含正确的值...
答案 0 :(得分:2)
问题来自 sshd 与 cygrunsrv.exe 一起运行的事实,该事件是通过在CYGWIN终端 ssh-host-config <中调用而设置的/ em>的。如果未使用 -c 标志修改,它会在安装时设置CYGWIN环境变量的默认值... 或者从 ssh-host-config 脚本执行中查询时未修改:
*** 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> me@server "env | grep CYGWIN"
CYGWIN=CYGWIN sshd nodosfilewarning
从那时起,执行有问题的案例不应再显示警告信息了!