我想执行
expect -c "
spawn ssh [email protected]
expect \"assword:\"
send \"pass\r\"
interact "
在新终端中双击 .sh 脚本。
我试过
#!/bin/bash
commands () {
expect -c "
spawn ssh [email protected]
expect \"assword:\"
send \"pass\r\"
interact "
$SHELL # keep the terminal open after the previous commands are executed
}
export -f commands
gnome-terminal -e "bash -c 'commands'"
没有运气。有什么想法吗?
答案1
您可以将 gnome-terminal 与 --disable-factory 选项一起使用,其作用是:
“不要向激活名称服务器注册,也不要重复使用已经运行的 GNOME 终端进程”
它将让“命令”环境变量通过。
gnome-terminal 通常以服务器模式运行。首次启动会启动一个进程,下次启动会向主进程发送消息以打开一个新窗口。因此,环境变量仅在首次启动时设置。
您可以使用单独的脚本文件并将其文件名传递给 bash。或者让它更聪明:在此脚本中检测其实际文件名并将其传递给 bash,这样它就会在 gnome-terminal 中调用相同的脚本(但传递一个参数以采用不同的代码路径)。
您可以将所有内容塞入变量中,但请确保它在调用 gnome-terminal 之前扩展。