LD_LIBRARY_PATH экспорта, который содержит пробелы и специальные символы

Попытка развернуть спокойное приложение на 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

Действительно ли это - невозможная задача?

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

0
задан 23 May 2017 в 05:39

1 ответ

Вы, как предполагается, экспортируете переменную, не ее значение.

Т.е.

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
$ 
1
ответ дан 6 October 2019 в 14:56

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

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