Как избавиться от префикса пути cygwin
В Cygwin, чтобы удалить /cydrive
префикс в путях, я сделал монтирование, как это -
mount -c /
после восстановления Cygwin, когда я говорю PWD - это дает мне что-то вроде - /c/Work/shared/imply-1.1.1
[на самом деле за окна c:\Work\shared\imply-1.1.1
] и теперь у меня есть Perl-скрипт, который я запускаю с использованием Cygwin, и я вижу ошибку... что-то вроде - Ошибка: не удается найти модуль 'C:\c\Work\shared\imply-1.1.1\dist\pivot\bin\pivot'
это дополнение /c/
Это понятие диска, возвращаемое Cygwin, вызывает вышеуказанную ошибку (по крайней мере, один из способов ее просмотра).
Есть идеи, как от этого избавиться?
Обновление: чтобы лучше понять вышеуказанную проблему. Вот что происходит. Есть файл скрипта, содержимое которого выглядит следующим образом:
#!/bin/bash -eu
if [ "$#" -gt 1 ]
then
echo "usage: $0 [conf-dir]" >&2
exit 1
fi
PWD="$(pwd)"
WHEREAMI="$(dirname "$0")"
if [ "$#" -lt 1 ] || [ "x$1" = "x" ]
then
CONFDIR="$WHEREAMI"/../conf
else
CONFDIR="$1"
fi
CONFDIR="$(cd "$CONFDIR" && pwd)/pivot"
WHEREAMI="$(cd "$WHEREAMI" && pwd)"
Когда я повторяю содержимое CONFDIR и WHEREAMI, я получаю следующее:
C:\cygdrive\c\Work\shared\imply-1.1.1\conf\pivot
C:\cygdrive\c\Work\shared\imply-1.1.1\bin\
Но пути ${pwd} должны были быть определены как "c:\Work....."
Так что я делаю не так в Cygwin?
1 ответ
Что насчет cygpath (преобразование путей формата Unix и Windows или вывод информации о системном пути)...
$ pwd
/cygdrive/c/Windows/System32
$ cygpath -w $(pwd)
C:\Windows\System32
Не монтировать C:\
как /
в Cygwin:
Если это поможет вам, я намеревался использовать что-то похожее на то, что вы хотите... Я попытался сначала на NT4, а затем на W2k, чтобы настроить *NIX-подобную файловую систему с одним корнем, где
C:\
является единственным корнем, а любое другое устройство - это [sub] папка где-то там.Угадай, что? Это не сработало... Вы не можете надежно использовать дисководы CD/DVD, если они не представлены в виде букв дисков, вы не можете отсоединить съемные дисководы, не нарушив сначала точку монтирования... это просто слишком много проблем поддерживать.
Кроме того, я смешивал Cygwin, Strawberry и пользовательские сборки MSVC perl
на одной машине уже более десяти лет, и я не понимаю, как /cygdrive
Префикс представляет проблему.
В Cygwin Bash работает следующее, как и ожидалось:
$ ls D: / Src
В cmd.exe
,
C: \ Users> c: \ opt \ cygwin64 \ bin \ perl -E "opendir $ h, 'D: / Src'; скажем, для readdir $h"
также работает как ожидалось.
Смотрите также переменную окружения CYGWIN:
(no)dosfilewarning
- Если установлено, Cygwin будет предупреждать, когда пользователь в первый раз использует путь в стиле "MS-DOS", а не путь в стиле POSIX. По умолчанию выключено.