期望遵守PATH环境变量

时间:2015-08-05 23:00:49

标签: environment-variables expect

我正在尝试运行一个期望脚本,该脚本调用已经添加到调用者脚本中的PATH变量的自定义tmux实例,但是期望似乎不尊重这样的变量。

来电脚本

#!/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

1 个答案:

答案 0 :(得分:2)

可以从全局数组变量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变量你怎么没有得到它,如果你在send命令收到错误消息,那么spawn可能成功,只有当它是关于要发送命令,它不可用导致此失败。