Попытка развернуть спокойное приложение на Ubuntu
Направления от спокойного сайта показывают, как позволить зависимостям библиотеки быть загруженными путем замены LD_LIBRARY_PATH:
#!/bin/sh
appname=`basename $0 | sed s,\.sh$,,`
dirname=`dirname $0`
tmp="${dirname#?}"
if [ "${dirname%$tmp}" != "/" ]; then
dirname=$PWD/$dirname
fi
LD_LIBRARY_PATH=$dirname/Framework:$dirname/Libraries:{LD_LIBRARY_PATH}
export $LD_LIBRARY_PATH
$dirname/$appname "$@"
К сожалению, каталог, где приложение должно быть установлено - который появится в PWD - имеет пробелы и специальные символы
/usr/share/My Company, Inc/ProductName/
Рассмотрение ресурсов как это: Как иметь путь, содержащий пробелы в ПУТИ? Я пытался измениться
dirname="$PWD"/$dirname
или даже выписал все это (так же, как тест, так как путь к библиотеке должен работать из любого каталога не только определенный), как
dirname="/usr/share/My\ Company\,\ Inc/ProductName/"
и
LD_LIBRARY_PATH="$dirname"
это все еще говорит
./MyProgram.sh: 13: export: Company,: bad variable name
Изменение export $LD_LIBRARY_PATH
кому: export "$LD_LIBRARY_PATH"
приводит к новой ошибке:
13: export: /usr/share/My Company, Inc/ProductName/./Framework:/usr/share/My Company, Inc/ProductName/./Libraries:: bad variable name
Рассмотрение этого вопроса: https://stackoverflow.com/questions/10072609/how-to-escape-spaces-in-library-path-appended-to-ld-preload
Действительно ли это - невозможная задача?
Как я могу заставить экспорт понять пробелы и запятую?
Вы, как предполагается, экспортируете переменную, не ее значение.
Т.е.
export LD_LIBRARY_PATH
не
export "$LD_LIBRARY_PATH"
Редактирование (пример):
$ LD_LIBRARY_PATH='/usr/share/My Company, Inc/ProductName'
$ export LD_LIBRARY_PATH
$ env | grep LD_
LD_LIBRARY_PATH=/usr/share/My Company, Inc/ProductName
$