5

我正在尝试从两个不同的位置运行我的 Expect 脚本,它将与以下引用的 Expect 可执行文件一起使用:

  1. 我的 linux 主目录 ( #!/usr/bin/expect)
  2. 另一台服务器上的明文视图 ( #!/clearlib/vobs/otherdir/bin/expect)

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

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

4

1 回答 1

4

如果在两台服务器上都正确设置了路径,则可以使用/usr/bin/env

#!/usr/bin/env expect

这将使用PATH/usr/bin在一种情况下,/clearlib/vobs/otherdir/bin在另一种情况下)中找到的期望

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

如果您在设置正确时遇到问题PATH,那么“/usr/bin/env关于 shebang 线特性的问题”可以提供帮助。

于 2012-11-14T16:13:52.977 回答