如何打开默认终端而不是使用`xterm`?使用$ {TERM}是否安全?

时间:2012-12-03 06:03:32

标签: bash xterm gentoo

我想在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是否安全?

1 个答案:

答案 0 :(得分:2)

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

另一方面,如果你的环境是X,你基本上保证dumb

Debian定义xterm(IIRC)让用户或系统管理员选择不同的默认终端模拟器。

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

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

另一方面,简单粗略的修复方法是要求脚本首先从终端运行;然后,您只需使用x-terminal-program来显示文本文件(我的EULA,我猜?)和cat(或echo再次)和cat与用户互动。也就是说,不要尝试为这些东西打开一个新的终端窗口。也许在剧本开头附近进行所有互动,以便尽早摆脱困境。

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