fish shell 似乎忽略了 LD_LIBRARY_PATH?

fish shell seems to be ignoring LD_LIBRARY_PATH?

我需要为 CUDA prior to launching darknet 设置 LD_LIBRARY_PATH。看起来像这样:

echo $LD_LIBRARY_PATH
/usr/local/cuda/lib64

当应用程序启动时,它无法加载它应该在该目录中找到的库:

./darknet 
./darknet: error while loading shared libraries: libcudart.so.10.0:
cannot open shared object file: No such file or directory

但是库肯定在那个目录中:

ldd /usr/local/cuda/lib64/libcudart.so.10.0
    linux-vdso.so.1 =>  (0x00007ffe7bf2d000)
    ...etc...

我假设我没有正确设置鱼 LD_LIBRARY_PATH。这就是我最初在鱼中的做法:

set -U LD_LIBRARY_PATH /usr/local/cuda/lib64
echo $LD_LIBRARY_PATH
/usr/local/cuda/lib64

当我在 bash 中尝试完全相同的事情时,它工作正常:

bash
export LD_LIBRARY_PATH=/usr/local/cuda/lib64
./darknet 
usage: ./darknet <function>

所有这些都在 64 位 Ubuntu 16.04.6 运行 fish 2.2.0 和 bash 4.3.48.

您没有导出变量。相反,做:

set -Ux LD_LIBRARY_PATH /usr/local/cuda/lib64
./darknet