2015-10-28 13 views
2

У меня есть установка MSYS, и я пишу скрипт bash для настройки некоторых файлов. Я хотел бы сделать символическую ссылку каталога из сценария bash в MSYS, но для этого мне нужно будет использовать , который является командой Windows. ln не работает с символическими ссылками NTFS, кажется, что копирует только эту папку, поэтому я не могу использовать это, к сожалению.Получить реальный каталог windows смонтированного каталога в MSYS (или использовать ln с MSYS)

У меня есть каталог, установленный как /opt в MSYS с использованием fstab. Настоящий каталог - C:\opt (но это может быть что угодно)

mklink ожидает путь в стиле Windows, такой как C:\opt. Однако я могу предоставить только /opt, с которым он не может работать. Есть ли способ получить «реальный» путь от /opt?

В качестве альтернативы, если есть способ получить ln, чтобы работать как mklink /D, это будет замечательно. Но я не могу найти способ (существует какой-то способ в Cygwin, но он, похоже, не работает для меня)

Примечание: у меня нет cygwin, и я не хочу устанавливать внешние программное обеспечение (включая Cygwin)

ответ

0

Я понял это как-то, хотя это своего рода уродливый хак

Если я хочу, чтобы выяснить реальный путь для Windows текущего каталога, я использовал pwd -W, который, по-видимому Функция MSYS

В моем сценарии я, вероятно, могу сделать что-то вроде:

realpath=`cd /opt && pwd -W` 

, чтобы получить реальный путь/opt. Я тестировал его и, похоже, работал.

Я оценил бы менее уродливый метод хотя

+1

Я думаю, что вам не нужен 'кд -' в конце, потому что все это работает в субоболочке в любом случае. Так что это делает его немного менее уродливым. : P – ben

+0

вы правы! изм. – 9a3eedi

1

я называю это «WinPath» и придерживаться его в своей папке/USR/бен для 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