実行中のXサーバーがないとプログラムをだます方法

実行中のXサーバーがないとプログラムをだます方法

テキストUIとGUIの両方を使用して実行できるこのプログラムがあります。

どちらかを強制するコマンドラインスイッチはありません。代わりにXにあるかどうかを自動的に検出するようです。たとえば、仮想端末で実行するとテキストモードに入り、端末エミュレータで実行するとテキストモードになります。 、別のグラフィックウィンドウが開きます)。

強制的にテキストモードに切り替えてX端末内で実行したいです。どうすればいいですか?

答え1

普通だけ

unset DISPLAY

端末のコマンドラインから。一部のアプリケーションはこれよりスマートであり、実際にはコンソールと擬似端末で権限と種類を確認します。

答え2

単一のコマンドに対してXを無効にするには、次のように書くことができます。

DISPLAY= ./my_command

次の戦略的スペースに注意してください=。より一般的には<variable>=<value>、空白で区切られた一連のプレフィックスをコマンドの前に追加して、プロセスの環境変数を設定できます。スペースは区切り文字として機能するため、=直後にスペースがある場合は前の変数が消去されます。サブシェルをコマンドとして使用し、その環境を印刷してこれらのプレフィックスの効果を確認できます。たとえば、

$ A=a B=b C= D=d sh
$ echo $A $B $C $D

これは印刷されます

a b d

これは、サブシェルの環境が実際に予想と異なることを示しています。個々の引数がに渡される前にシェル置換が発生しますecho。つまり、呼び出しは3つの引数で構成されているため、コマンドラインecho(前に2つのスペースがあっても単一のスペースのみを印刷します)と同様に、出力内と出力の間にスペースが1つしかありません。 (2つのスペースを印刷する)と同じです。との間にスペースがあります。bdecho a b ddecho a b "" dbd

関連情報