我想对一个简单的 .sh 文件使用 autoexpect 但是终端显示此错误:
can't find package Expect
while executing
"package require Expect"
(file "/usr/bin/autoexpect" line 6)
我的终端命令是:
autoexpect shell.sh
我删除了 Expect 并再次安装它,但与过去没有什么区别!
谁能帮我?
这是的输出dpkg -l | grep tcl; which tclsh; which tclsh8.6; dpkg -S Expect; echo $PATH
。Anaconda 是否与预期相矛盾?
答案1
您必须安装主 Expect包裹经过
sudo apt-add-repository universe
sudo apt-get install expect
它将tcl-expect
作为依赖项为您安装。
为了运行 Expect 脚本以避免 Anaconda 出现问题,您必须手动指定 PATH 变量,然后运行 expect/tcl 脚本:
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
autoexpect ./shell.sh
或者在一行中:
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin autoexpect ./shell.sh
为了简化每个 autoexpect 命令的执行,您可以向其添加以下别名~/.bashrc
:
alias autoexpect='PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin autoexpect'
答案2
当使用conda的时候,conda自带的expect会覆盖原有的expect命令,造成冲突。
解决方案:
重新安装 expect 命令
conda install -c eumetsat expect
再次使用unbuffer时,就恢复正常了。