期望兑现 PATH 环境变量
Getting expect to honor the PATH environment variable
我正在尝试 运行 调用自定义 tmux 实例的 expect 脚本已经添加到调用者脚本中的 PATH 变量中,但是 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
可能成功并且只有当它是关于无法发送命令,导致此失败。
我正在尝试 运行 调用自定义 tmux 实例的 expect 脚本已经添加到调用者脚本中的 PATH 变量中,但是 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
可能成功并且只有当它是关于无法发送命令,导致此失败。