Получить настоящий каталог 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
Другие вопросы по тегам