0

我想在linux上运行steam,又不想安装xterm,有两个时刻要xterm

echo -e "$*" >$tmpfile
xterm -T "$title" -e "cat $tmpfile; echo -n 'Press enter to continue: '; read input"
rm -f $tmpfile 

# Fall back to sudo in a terminal
xterm -e sudo -p "$prompt
[sudo] password for user: " $*

posix 在这里使用 ${TERM} 而不是 xterm 是否安全?

4

1 回答 1

2

假设脚本将在 X 会话中运行;不,没有理由相信TERM会在这种情况下设置(如果是,那么它指向同名的二进制文件将是一个巧合——这个变量的内容应该是 Termcap 的键或 Terminfo;很多时候,在现代系统上,它可能类似于vt220不是xterm, 或emacsdumb) 的变体。

另一方面,如果你的环境是 X,你基本上可以保证有xterm.

Debian 定义x-terminal-program(IIRC) 让用户或系统管理员选择不同的默认终端仿真器。

我认为 POSIX 1003 对您尝试解决的问题没有任何概念(我们也在猜测;也许您可以为您的问题添加更多细节?)

Freedesktop.org 是一个更好的要求用户使用的平台,但我不知道例如 Mac OSX 是否遵守其中任何有用的子集。(他们可能会实现所有这些;我根本不知道。)

另一方面,简单粗暴的解决方法是要求脚本首先从终端运行;然后,您可以简单地使用cat来显示文本文件(您的 EULA,我猜?)和echo(或cat再次)并read与用户交互。也就是说,不要试图为这些东西打开一个新的终端窗口。也许在脚本开头附近进行所有交互,以便于提早退出。

如果你想要图形交互,你需要限制你的目标平台,或者为每个不同的环境编写复杂的包装。

于 2012-12-03T06:18:44.980 回答