我很喜欢使用 shell,但我对 shell 脚本知之甚少。今天我发现了一个用于修复 node-webkit libudev.so.0 问题的小 shell 脚本:https ://github.com/rogerwang/node-webkit/wiki/The-solution-of-lacking-libudev.so.0
如您所见,解决方案一指示创建一个 shell 脚本,其中包含以下代码:
LD_LIBRARY_PATH=/home/omi/nw:$LD_LIBRARY_PATH ./nw $*
我对正在发生的事情的理解如下:
1) 声明变量 LD_LIBRARY_PATH,并为其赋值,在这种情况下,它是 nw 目录的路径,我们之前在其中创建了指向 libudev.so.1 的符号链接。然后,将 $LD_LIBRARY_PATH 的先前值附加到新值。然后执行传递传递给 shell 脚本的参数的 nw 二进制文件。
正如预期的那样,这很好用,但是如果我将代码分成两行,如下所示:
LD_LIBRARY_PATH=/home/omi/nw:$LD_LIBRARY_PATH
./nw $*
这没用。shell 脚本执行没有任何错误,但 node-webkit 应用程序没有运行。相反,我们得到关于 libudev.so.0 丢失的错误。这是为什么?
此外,您添加的路径(在本例中为 /home/omi/nw)似乎可以是任何东西。我尝试使用 /home/、/home/akjfd/ 和其他变体,并且脚本始终按预期工作。这是为什么?(我终于把它留下了指向我创建符号链接的正确路径)
PS。有点跑题了,我发现在同一目录(Fedora 18 64 位中的 /lib64/)中创建指向 libudev.so.1 的符号链接并将其命名为 libudev.so.0 也可以,而无需创建 shell 脚本,但我不推荐它,因为您会污染 /lib64/ 目录,并且可能会导致系统出现问题。