我正在尝试从两个不同的位置运行我的Expect脚本,它将使用以下引用的Expect可执行文件:
#!/usr/bin/expect
)#!/clearlib/vobs/otherdir/bin/expect
)问题是我无法在两个地方运行脚本,除非我将Expect可执行文件位置的引用更改为文件的第一行。
如何为相应的目录获取正确的Expect可执行文件实例?
答案 0 :(得分: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”可以提供帮助。