linux环境变量问题记录
最近在分析一个ROS2的数据通信问题,一个依赖ROS2组件的开机自启动的数据服务,另一个依赖ROS2的demo是在串口窗口自启动的进程,该Demo无法和数据服务进行通信,并且会导致数据服务进程挂掉。
如果在shell或者串口窗口手动启动数据服务,那么通信正常。
经过几天交叉验证发现,是环境变量的差异导致的问题。
shell窗口和串口都会继承profiled的环境变量。那么在这两个窗口启动的程序也默认继承profiled的环境。
而自启动的数据服务是systemd负责启动的,该服务的环境变量就是继承systemd的环境设置。
依赖ROS的服务如果想要实现通信,那么环境变量必须要匹配。
所以方案就是将profiled新增的环境变量配置到systemd中。