Символическая ссылка не использует целевой рабочий каталог
Я создал следующую символическую ссылку:
Источник: /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 для поиска собственных файлов.