这里的主要问题是:是否有编写可在多个 UNIX 平台上运行的 UNIX shell 脚本的标准方法。
例如,我们有许多主机运行不同风格的 UNIX(Solaris、Linux)和不同的版本,所有这些主机的文件系统布局都略有不同。有些主机在 /usr/local/gnu/bin/ 中有 whoami,有些在 /usr/bin/。
我们所有的脚本似乎都以稍微不同的方式处理这个问题。有些人对架构有案例陈述:
case "`/script/that/determines/arch`" in
sunos-*) WHOAMI=`/usr/local/gnu/bin/whoami` ;;
*) WHOAMI=`/usr/bin/whoami` ;;
esac
使用这种方法,您可以确切地知道正在执行什么二进制文件,但是如果有很多命令正在执行,那就很麻烦了。
有些只是设置PATH
(基于上面的 arch 脚本)并仅通过它们的名称调用命令。这很方便,但是您无法控制运行哪个命令,例如,如果您有:
/bin/foo
/bin/bar
/other/bin/foo
/other/bin/bar
您将无法同时使用/bin/foo
和/other/bin/bar
。
我能想到的另一种方法是在每个主机上都有一个本地目录,其中包含每个主机上需要的每个二进制文件的符号链接。例如:
Solaris 主机:
/local-bin/whoami -> /usr/local/gnu/bin/whoami
/local-bin/ps -> /usr/ucb/ps
Linux主机:
/local-bin/whoami -> /usr/bin/whoami
/local-bin/ps -> /usr/ps
人们还使用哪些其他方法?请不要只说用 Python 编写脚本……在某些任务中,bash 是完成简单任务的最简洁实用的方法。