我使用在本地构建的开源软件。构建手册说在构建目录中像这样运行它
$ LD_LIBRARY_PATH=../applicationExeFile
然后应用程序运行正常。
现在,我尝试制作一个简单的 shell 来快速调用,而无需使用以下内容键入太多 (run.sh):
#!/bin/bash
export -n LD_LIBRARY_PATH=.
./applicationExeFile
但似乎 LD_LIBRARY_PATH 没有在 shell 中注册,因为我收到有关应用程序可执行文件找不到位于同一文件夹中的库的错误
./applicationExeFile: error while loading shared libraries: libchart.so: cannot open shared object file: No such file or directory
我做错了什么以及如何实现这一目标?
第一个问题是
-n
实际上un导出一个变量,它不导出它。见help export
:接下来,
.
指的是进程的当前工作目录。这意味着您的脚本仍然需要从安装程序的特定目录运行,这似乎毫无意义。只需使用完整路径即可。如果您的程序位于/home/dekker/myprogram
,请像这样制作您的脚本:要不就:
因为没有什么
bash
- 具体的,你不需要单独的export
声明。使用exec
还可以节省一个过程,并使信号处理和退出状态的报告更加可靠。