2012-11-14 44 views
4

我想从两个不同的位置上运行我的Expect脚本的Expect脚本,也将努力为以下期待可执行文件引用:执行从不同位置

  1. 我的Linux主目录(#!/usr/bin/expect
  2. 一另一台服务器上的清除视图(#!/clearlib/vobs/otherdir/bin/expect

问题是,除非将Expect可执行文件位置的引用更改为文件的第一行,否则我无法在两个位置都运行该脚本。

如何获得相应目录的Expect可执行文件的正确实例?

回答

3

如果你的路径是否正确两台服务器上设置,你可以使用/usr/bin/env

#!/usr/bin/env expect 

这将使用期望的那样发现了PATH/usr/bin在一种情况下,/clearlib/vobs/otherdir/bin在其他)

通过替代地使用env(如在示例中),解释器被搜索并且位于脚本运行时。
这使脚本更具可移植性,但也增加了选择错误解释器的风险,因为它在可执行搜索路径上的每个目录中搜索匹配项。
它也遭受同样的问题,因为到二进制的路径env也可能在每台机器上不同。

如果您在设置正确的PATH时遇到问题,那么“/usr/bin/env questions regarding shebang line pecularities”可以提供帮助。

+0

哇,这很简单。再次感谢冯! – Jake88