如何让Cygwin准确地读取我的Windows环境变量



我正在使用Windows XP和最新版本的Cygwin。 如果我在 Windows 系统中设置了以下环境变量

JBOSS_HOME=C:/Program Files/jboss-4.2.3.GA

然后启动Cygwin,我无法切换到继承的$JBOSS_HOME目录。

$ cd $JBOSS_HOME
cygwin warning:
  MS-DOS style path detected: C:/Program
  Preferred POSIX equivalent is: /cygdrive/c/Program
  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
-bash: cd: C:/Program: No such file or directory

是否可以在Windows环境中定义一次我的系统变量,然后让Cygwin解释它,这样我就不会收到"没有这样的文件或目录"警告?

你可以做以下两件事之一...

  • 添加一个命令来转换 .bashrc 文件中的路径,如下所示...

export JBOSS_HOME=$( cygpath "$JBOSS_HOME" )

  • 引用变量时只需将变量放在引号之间,因为 Cygwin 理解 DOS 样式路径,即使它不喜欢它们。该命令对您失败的原因是路径中有一个空格,因此将其放在引号中将使路径正确读取为一个参数...

cd "$JBOSS_HOME"

请注意,在这种情况下,您可能仍会收到相同的"cygwin 警告"。为了使这种情况消失,您需要按照警告的建议向CYGWIN var添加nodosfilewarning。您可以通过将其添加到您的 .bashrc 文件中来做到这一点......

export CYGWIN="${CYGWIN} nodosfilewarning"

我正在使用带有ShellED插件的Eclispse,

我收到了相同的通知,不知道准确的配置,

我只是将导出值添加到脚本中

'#!/bin/bash'
export CYGWIN="${CYGWIN} nodosfilewarning"
echo hello
这对

我有用

$ SEVENZIP="C:/Program Files/7-Zip"
$ read < <(cd "$SEVENZIP"; pwd)
$ cd "$REPLY"

最新更新