打开新终端并在 Unity 中双击运行脚本

打开新终端并在 Unity 中双击运行脚本

我想执行

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

  1. 您可以将 gnome-terminal 与 --disable-factory 选项一起使用,其作用是:

    “不要向激活名称服务器注册,也不要重复使用已经运行的 GNOME 终端进程”

    它将让“命令”环境变量通过。

    gnome-terminal 通常以服务器模式运行。首次启动会启动一个进程,下次启动会向主进程发送消息以打开一个新窗口。因此,环境变量仅在首次启动时设置。

  2. 您可以使用单独的脚本文件并将其文件名传递给 bash。或者让它更聪明:在此脚本中检测其实际文件名并将其传递给 bash,这样它就会在 gnome-terminal 中调用相同的脚本(但传递一个参数以采用不同的代码路径)。

  3. 您可以将所有内容塞入变量中,但请确保它在调用 gnome-terminal 之前扩展。

相关内容