我正在尝试运行一个 Expect 脚本,该脚本调用已添加到调用者脚本中的 PATH 变量中的自定义 tmux 实例,但是 Expect 似乎并不支持此类变量。
调用者脚本
#!/bin/sh
export PATH="$HOME/bin:$PATH"
expect_script
预期脚本:
#!/usr/bin/env expect
spawn tmux
send "hello world"
send: spawn id exp7 not open
while executing "send "hello world""
我正在使用以下解决方法,但想知道是否有更干净的替代方案。
spawn $env(HOME)/bin/tmux
最佳答案
可以从全局数组变量env
访问环境变量。
#!/usr/bin/env expect
set ::env(PATH) "$::env(HOME)/bin:$::env(PATH)"
spawn tmux
# Further code below
但是,令我惊讶的是,如果在之前的情况下没有设置 PATH
变量,spawn
命令本身将明显失败,并显示以下错误消息
spawn tmux
couldn't execute "tmux": no such file or directory
while executing
"spawn tmux"
想知道为什么没有 PATH
变量就没有得到它,如果您在发送命令时收到错误消息,那么有可能 spawn
成功并且仅当要发送命令时,它不可用导致此失败。
关于environment-variables - 期望遵守 PATH 环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31844217/