在C代码和Shell脚本中使用环境变量

时间:2014-07-09 05:34:12

标签: debian environment udev

我在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

1 个答案:

答案 0 :(得分:0)

嗯,经过一番调查后,我找到了解决方案......

根据udev规则, (请参阅http://www.reactivated.net/writing_udev_rules.html中的“环境互动”部分,) udev看到的环境与您在控制台上获得的环境不同。

此外,可以在规则本身中设置udev环境的变量;使用 ENV {some_var} =“value”选项。

因此,这解决了问题,因为脚本文件和udev执行的可执行文件可以查看并使用此环境变量!!