导出包含空格和特殊字符的 LD_LIBRARY_PATH

导出包含空格和特殊字符的 LD_LIBRARY_PATH

尝试在 Ubuntu 上部署 Qt 应用程序

Qt 站点展示如何通过改变 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/

查看如下资源:如何在 PATH 中出现包含空格的路径?我尝试改变

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

这是一个不可能完成的任务吗?

我怎样才能使导出理解空格和逗号?

答案1

您应该导出变量,而不是它的值。

IE

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
$ 

相关内容