Символическая ссылка не использует целевой рабочий каталог

Я создал следующую символическую ссылку:

Источник: /usr/local/android-ndk-r5/ndk-build
Место назначения: /usr/local/bin/ndk-build

Однако, когда я пытаюсь использовать ndk-build из моего исходного каталога, он терпит неудачу, потому что не может найти файлы, от которых зависит скрипт, в исходном каталоге.

Как я могу получить символическую ссылку для использования исходного каталога в качестве рабочего каталога?

2 ответа

Решение

Вы не можете, вам нужно сделать скрипт-обертку.

Предполагая, что программа использует имя файла для определения сценария (вероятно):

#!/bin/sh
exec /usr/local/android-ndk-r5/ndk-build "$@"

Предполагая, что программа опирается на текущий рабочий каталог (маловероятно):

#!/bin/sh
cd /usr/local/android-ndk-r5
exec ./ndk-build "$@"

Сохраните один из этих файлов в /usr/local/bin/ndk-build и сделать его исполняемым:

sudo editor /usr/local/bin/ndk-build
sudo chmod 755 /usr/local/bin/ndk-build

При вызове-выполнении программы под GNU Linux получает несколько аргументов командной строки, в том числе текущий рабочий каталог.

Код в программе решает, как использовать эти аргументы, поэтому код решает, будет ли программа использовать каталог ссылки или каталог цели.

Очевидно, ndk-build использует каталог ссылки, чтобы найти свои собственные файлы, поэтому вы вынуждены создать какую-то оболочку.

Будьте осторожны, чтобы не перепутать "восприятие" текущего рабочего каталога (под которым работает ваша команда, то есть каталог, возвращаемый pwd команда) с "восприятием" каталога, используемого ndk-build для поиска собственных файлов.

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