0

Linux で Steam を実行したいのですが、xterm をインストールしたくありません。xterm が必要になる瞬間が 2 つあります。

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 が xterm の代わりに ${TERM} を使用しても安全ですか?

4

1 に答える 1

2

スクリプトが X セッションで実行されると仮定します。いいえ、そのような状況で が設定されると信じる理由はありませんTERM(設定されている場合、同じ名前のバイナリを指すのは偶然です。この変数の内容は Termcap のキーである必要があります)。または Terminfo; 多くの場合、最新のシステムでは、 、または)vt220の変形ではない場合のようなものかもしれません。xtermemacsdumb

一方、環境が X の場合は、基本的にxterm.

Debian はx-terminal-program(IIRC) を定義して、ユーザーまたはシステム管理者が別のデフォルトの端末エミュレーターを選択できるようにします。

POSIX 1003 には、あなたが解決しようとしている問題の概念がないと思います (そして、私たちも推測しています。おそらく、質問に詳細を追加できますか?)

ユーザーが利用できるようにするためのより良いプラットフォームは Freedesktop.org かもしれませんが、たとえば Mac OSX がその有用なサブセットに準拠しているかどうかはわかりません。(もしそうなら、彼らはすべてを実装するかもしれません。私にはわかりません。)

一方、単純で大まかな修正は、最初にスクリプトを端末から実行することを要求することです。次に、単純catにテキスト ファイル (EULA だと思いますか?) を表示し、echo(またはcatもう一度)readユーザーと対話するために使用できます。つまり、これらのために新しいターミナル ウィンドウを開こうとしないでください。おそらく、スクリプトの開始近くですべての対話を行って、早期の救済を容易にします。

グラフィカルな対話が必要な場合は、ターゲット プラットフォームを制限するか、異なる環境ごとに複雑なラッピングを作成する必要があります。

于 2012-12-03T06:18:44.980 に答える