Получить настоящий каталог windows смонтированного каталога в MSYS (или использовать ln с MSYS)
У меня установлена MSYS, и я пишу bash-скрипт для настройки некоторых файлов. Я хотел бы сделать символическую ссылку на каталог из скрипта bash в MSYS, но для этого мне нужно будет использовать mklink /D
, которая является командой Windows. ln
не работает с символическими ссылками NTFS, кажется, что он только копирует папку, поэтому я не могу использовать это, к сожалению.
У меня есть каталог, смонтированный как /opt
в MSYS с помощью fstab. Настоящий каталог C:\opt
(но это может быть что угодно)
mklink
ожидает путь в стиле Windows, как C:\opt
, Тем не менее, я могу только предоставить /opt
с которым он не может работать. Есть ли способ получить "реальный" путь /opt
?
В качестве альтернативы, если есть способ получить ln
работать как mklink /D
это будет здорово. Но я, кажется, не могу найти способ (хотя в Cygwin есть способ, но он, похоже, не работает для меня)
Примечание: у меня нет Cygwin, и я не хочу устанавливать внешнее программное обеспечение (включая Cygwin)
2 ответа
Я понял это как-то, хотя это своего рода уродливый взлом
Если я хочу выяснить реальный путь Windows к текущему каталогу, я могу использовать pwd -W
который, по-видимому, является функцией только MSYS
В моем сценарии я, вероятно, могу сделать что-то вроде:
realpath=`cd /opt && pwd -W`
чтобы получить реальный путь / опт. Я проверил это, и это похоже на работу.
Я бы оценил менее уродливый метод, хотя
Я называю это "winpath" и помещаю в папку /usr/bin для msys. Только pwd
кажется, поддерживает раскрытие основного корневого пути:
#!/bin/bash
if [[ -f "$1" ]]; then
dir=$(dirname "$1")
add=/$(basename "$1")
else
dir="$1"
add=""
fi
pushd $dir > /dev/null
echo $(pwd -W)$add
popd > /dev/null