Как я могу заставить 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 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 интерпретировать ее так, чтобы я не получил предупреждение "Нет такого файла или каталога"?

Ответ 1

Вы можете сделать одну из двух вещей...

  • Добавьте команду для преобразования пути в ваш .bashrc файл, например...

export JBOSS_HOME=$( cygpath "$JBOSS_HOME" )

или

  • Просто поставьте переменную между кавычками, ссылаясь на нее, так как Cygwin понимает пути к стилю DOS, хотя и не предпочитает их. Причина, по которой команда терпит неудачу для вас, заключается в том, что в пути есть пробел, поэтому включение его в кавычки позволит правильно читать путь, как один аргумент...

cd "$JBOSS_HOME"

Обратите внимание, что в этом случае вы можете получить такое же "предупреждение cygwin". Чтобы это ушло, вам нужно добавить nodosfilewarning в свой CYGWIN var, как предупреждает об этом. Вы можете сделать это, добавив это в свой .bashrc файл...

export CYGWIN="${CYGWIN} nodosfilewarning"

Ответ 2

Я использую Eclispse с плагинами ShellED,

Я получил то же уведомление, не зная точную конфигурацию,

Я просто добавляю значение экспорта в script

'#!/bin/bash'

export CYGWIN="${CYGWIN} nodosfilewarning"

echo hello