environment-variables - 期望遵守 PATH 环境变量

标签 environment-variables expect

我正在尝试运行一个 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/

相关文章:

python - Python "os.environ.get"能否返回非字符串?

linux - 将 ls 命令的结果保存在本地计算机上的远程 SFTP 服务器中

escaping - 用于将其放入 TCL 中的正则表达式的转义字符串

linux - 自动化命令行应用程序的集成测试

node.js - Linux环境值的值中是否允许等号字符 "="?

python - 如何在 Python 中从远程系统检索环境变量?

linux - 如何在linuxexpect脚本中传递perl形式的参数?

linux期望sudo脚本将命令和参数视为命令

php - 运行命令行脚本时设置 PHP 环境变量

shell - 来自 Emacs 的外部进程调用期间的临时修改环境