为了让一些 C 代码正确编译,我需要导出一个文件夹,以便找到某些文件。
在命令行上,如果我首先运行
export LD_LIBRARY_PATH=/bin/path../version/:$LD_LIBRARY_PATH
然后 C 代码的可执行文件就可以工作了。如果我不导出LD_LIBRARY_PATH
,那么可执行文件将失败,因为C包找不到必要的文件,即
exectuable: error while loading shared libraries: file1.so: cannot open shared object file: No such file or directory
我现在想通过 bash 脚本运行此代码。这是我的 bash 脚本run_stuff.sh
:
#!/bin/bash
source ~/.bash_profile
export LD_LIBRARY_PATH=/bin/path../version/:$LD_LIBRARY_PATH
path/to/executable/executable
此操作失败,并出现上述错误。从那以后我尝试过
echo "export LD_LIBRARY_PATH=/bin/path../version/:$LD_LIBRARY_PATH"
在 bash 脚本中,我添加了
export LD_LIBRARY_PATH=/bin/path../version/:$LD_LIBRARY_PATH
之内~/.bash_profile
。它仍然不起作用——C 代码找不到这个文件。
如何在 bash 脚本中正确导出文件夹?
答案1
1
可以在本地导出。
#!/bin/bash
LD_LIBRARY_PATH=/bin/path../version/:$LD_LIBRARY_PATH path/to/executable/executable
使用VAR=value cmd
将为cmd
流程设置并导出 VAR。
2
分两步导出
#!/bin/bash
LD_LIBRARY_PATH=/bin/path../version/:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH
path/to/executable/executable
这就是我在脚本中所做的方式。 (请注意,这与手册页所说的相矛盾)
导出 [-fn] [名称[=单词]] ...
如果变量名称后跟=word,则变量的值将设置为word。