我想在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安全吗?
假设脚本将在X会话中运行;不,没有理由相信TERM
会在这种情况下被设置(如果是的话,它指向一个同名的二进制文件将是巧合——这个变量的内容应该是Termcap或Terminfo的密钥;很多时候,在现代系统上,如果它不是xterm
、emacs
或dumb
的变体,它可能类似于vt220
)。
另一方面,如果您的环境是X,则基本上可以保证您拥有xterm
。
Debian定义了x-terminal-program
(IIRC),让用户或系统管理员选择不同的默认终端模拟器。
我不认为POSIX 1003对你试图解决的问题有任何概念(我们也在猜测;也许你可以在你的问题中添加更多细节?)
要求用户可用的更好平台可能是Freedesktop.org,但我不知道例如Mac OSX是否遵守其中任何有用的子集。(如果有的话,他们可能会全部实现;我只是不知道。)
另一方面,简单粗暴的修复方法是首先要求脚本从终端运行;然后,您可以简单地使用cat
来显示文本文件(我猜是您的EULA?),使用echo
(或者再次使用cat
)和read
来与用户交互。也就是说,不要试图为这些东西打开一个新的终端窗口。也许在剧本开始的时候进行所有的互动,这样可以很容易地提前退出。
如果你想要图形交互,你需要限制你的目标平台,或者为每个不同的环境编写复杂的包装。