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

Я создал переходящую символьную ссылку:

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

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

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

5
задан 30 June 2011 в 13:44

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
5
ответ дан 23 November 2019 в 09:28

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

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

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

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

0
ответ дан 23 November 2019 в 09:28

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

Похожие вопросы: