символические ссылки в скрипте bash не работают - PullRequest
2 голосов
/ 01 декабря 2011

Я пишу сценарий bash в Mac OS X, который создает символическую ссылку, но когда я пытаюсь открыть созданную символическую ссылку, она никуда не уходит, и я получаю сообщение об ошибке, что не может найти оригинал.

OriginalPath="~/PathTo/bundle1.bundle"
NewPath="/OtherPath/bundle1.bundle"
sudo ln -s $OriginalPath $NewPath

Я тоже пробовал это:

sudo ln -s ${OriginalPath} ${NewPath}

Ответы [ 2 ]

3 голосов
/ 01 декабря 2011

ln устанавливает перенаправление точно на то, что вы ему даете, поэтому оно будет интерпретироваться относительно расположения ссылки.На самом деле я не уверен на 100%, как ссылки будут обрабатывать ~, но я не верю, что bash расширит его в кавычках, и, поскольку это расширение bash, а не общая файловая система, я подозреваю, что перенаправление будетв фактический каталог с именем ~, который, вероятно, не существует.Либо определите относительный путь, либо разверните его в абсолютный путь.

1 голос
/ 01 декабря 2011

Предположим, ${OriginalPath} уже существует (а если нет, то это ваша проблема):

Первое, на что я посмотрю, это на вопрос, является ли расширение тильды проблемой. Измените OriginalPath на полное имя пути (например, /Users/jpc/PathTo/bundle1.bundle). Если это решит проблему, то либо просто воспользуйтесь этим, либо узнайте, как включить расширение тильды в оболочке, либо используйте переменную среды ${HOME} вместо расширения тильды.

Вероятно, лучше в любом случае не использовать расширение тильды в сценарии оболочки, так как вы не сможете убедиться, что все пользователи, запускающие сценарий, включат его.

...