Как избавиться от префикса пути 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. По умолчанию выключено.

Другие вопросы по тегам