Как я могу заставить 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