我在Debian中编写了一个udev规则,当USB存储设备插入系统时,该规则运行shell脚本。规则完美无缺。 该脚本依次调用存储在特定路径中的几个可执行文件, 例如, / home / username / XYZtool /
我想将此路径存储为环境变量,如下所示, 的 XYZpath = /家庭/用户名/ XYZtool
并使用。$ XYZpath / executable1 调用shell脚本中的可执行文件 命令而不是给出完整的绝对路径,如 ./ home / username / XYZtool / executable1
但是,当我使用环境变量时,我的可执行文件没有被调用;但是当我提供可执行文件的完整绝对路径时,正在调用可执行文件。 谁能告诉我我在这里失踪了什么?
我的脚本文件如下所示
#!/bin/sh
./home/username/XYZtool/executable1 --> working
.$XYZpath/executable2 --> not working
答案 0 :(得分:0)
嗯,经过一番调查后,我找到了解决方案......
根据udev规则, (请参阅http://www.reactivated.net/writing_udev_rules.html中的“环境互动”部分,) udev看到的环境与您在控制台上获得的环境不同。
此外,可以在规则本身中设置udev环境的变量;使用 ENV {some_var} =“value”选项。
因此,这解决了问题,因为脚本文件和udev执行的可执行文件可以查看并使用此环境变量!!