Ubuntu 16下设置LD_LIBRARY_PATH环境变量是否会清除原有条目?
关于LD_LIBRARY_PATH设置是否会清除原有内容的问题
嘿,这个顾虑完全合理——毕竟ROS环境依赖的库路径全在LD_LIBRARY_PATH里,要是不小心覆盖了确实会出大问题!直接给你讲清楚两种操作的区别:
直接赋值会清除原有内容:如果你用命令
export LD_LIBRARY_PATH=/your/new/opencv-numpy-path,这会直接把LD_LIBRARY_PATH的值替换成新路径,原来ROS相关的路径就全没了,ROS程序肯定会找不到依赖报错,绝对不能这么干。追加路径才是正确姿势:要保留原有内容同时添加新路径,得用路径拼接的方式,命令是:
export LD_LIBRARY_PATH=/your/new/opencv-numpy-path:$LD_LIBRARY_PATH这里的
$LD_LIBRARY_PATH会调用变量原有的值,加上冒号(Linux下环境变量的路径分隔符)把新路径拼在前面。如果你希望新路径的优先级低于原有路径(也就是系统先找ROS的库,再找你的新库),就反过来写:export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/your/new/opencv-numpy-path
额外提醒:让配置永久生效
上面的export命令只是临时生效,重启终端或者系统后就会消失。如果要让设置永久保留,可以:
- 针对当前用户:打开
~/.bashrc文件(ROS环境一般也是配置在这里),把上面的追加命令加到文件末尾,然后执行source ~/.bashrc让修改立刻生效。 - 针对系统所有用户:编辑
/etc/profile或者/etc/environment文件,同样添加追加命令,不过需要管理员权限(用sudo编辑)。
这样操作后,既添加了你需要的opencv-numpy转换器库路径,又完全不会影响原有的ROS环境配置~
内容的提问来源于stack exchange,提问作者Daniel Saito




