在shell脚本中运行外部实用程序时的最佳做法是什么。例如,如果我想在多个脚本中运行'gzip'以确保使用特定的gzip二进制文件,那么我是否应该将二进制文件的完整路径设为变量并在脚本中使用该变量?
GZIP=/home/me/bin/gzip
$GZIP somefile
$GZIP anotherfile
或者,对每次调用二进制文件的路径进行硬编码是否更好?
/home/me/bin/gzip somefile
/home/me/bin/gzip anotherfile
或者设置和依赖路径更好吗?
PATH=/home/me/bin:$PATH
gzip somefile
gzip anotherfile
我没有以root身份运行脚本,因此可维护性,可移植性比用户安全性更重要。
答案 0 :(得分:2)
我认为最后一个是最好的。如果不导出它,则脚本调用的程序将无法看到PATH更改,您可能不希望它可见。
答案 1 :(得分:2)
我认为第一种选择是最好的。你会发现它或类似的东西:
SOMEPATH=/path/to/somewhere
EXEC_ONE=exec_foo
EXEC_TWO=exec_bar
$SOMEPATH/$EXEC_ONE --argument baz_file
在许多系统脚本中。
您可以使用条件来测试是否存在,甚至是兼容性,可用选项等,并相应地设置变量。