誰かが私のプロフィールの手がかりを与えることができますか.xinitrc
?いくつかの実用的な質問に答える良いマニュアルを見つけるのに苦労しています。
- これはユニバーサルBashスクリプトであると主張しますが、そうではありません。
- 一部のコマンドが必要で
exec
あり、一部が必要ないのはなぜですか? - このコマンドは正確に何ですか
exec
? - バイナリ構造または構文構造に固有のものですか
xinitrc
? - execで実行できるものと実行できないものは何ですか?
- 環境変数を正しく設定するには?
ほとんどの主流ディストリビューションのユーザーは理解する必要さえなく、xinitrc
Kodiの「一時的な」シェルを設定するまで超小型ウィンドウマネージャTWMを使用し、Kodiをフルスクリーンで実行する必要がありました。kodi-standalone
シェルは私には適していないからです。
しかし、再びxinitrc
:
実際のケース:
#!/bin/bash
/usr/bin/twm &
sleep 1
exec xterm
なぜtwm
必要なくsleep
必要なのですか? exec
xterm
動作しない例:
#!/bin/bash
/usr/bin/twm &
sleep 1
exec WINDOWING=x11 /usr/bin/kodi -geometry +0+0
これはexec
実行のみで、WINDOWING=x11
残りの行は無視されます。別のBashスクリプトWINDOWING=x11 /usr/bin/kodi -geometry +0+0
(今回は通常のスクリプト)でラップし、そのスクリプトをexec
;それからついに働いた。
答え1
このexec
コマンドは、現在のシェルプロセスを指定されたコマンドを実行して生成されたプロセスに置き換えます。そうでない場合、exec
コマンドが終了すると、待機中のシェルセッションに制御が返されます。を使用すると、exec
現在のシェルが置き換えられるため、その時点からスクリプトはコマンドを実行しなくなります。
この~/.xinitrc
ファイルはシェルスクリプトです。ウィンドウマネージャ(twm
あなたの場合)だけでなく、最初に起動したい他のX11クライアント(たとえば、xterm
他の端末などxeyes
)も起動します。このスクリプトには、有効なスクリプト(シェルスクリプトソルバーによって実行されるため)であることを除いて特別な構文はありません。
最初の例では
exec xterm
これは現在のシェルプロセスを次にxterm
置き換えexec
ます。見える効果はありますが、.xinitrc
スクリプトは終了する前にバックグラウンドでxterm
終了を待ちます(これはファイルの最後のコマンドなので)。
これが完了すると、exec twm
シェルはそれ自体が置き換えられます。twm
つまり、スクリプトで他のコマンドを実行できなくなります。そのため、代わりに(最後に)twm
バックグラウンドプロセスから始めました。&
sleepはtwm
端末を起動する前に正しく起動することです。私はこれが必ずしも必要だとは思わない。実際、ウィンドウの装飾やウィンドウの移動、またはサイズ変更機能が必要ない場合は、twm
他のウィンドウマネージャを実行する必要もありません(少なくともフルスクリーンを実行しない場合xterm
)。
2番目の例では
exec WINDOWING=x11 /usr/bin/kodi -geometry +0+0
このexec
コマンドを使用してこれらの環境変数を設定することはできません。代わりにWINDOWING
変数を設定してエクスポートできます。今後移動するkodi
:
export WINDOWING=x11
exec /usr/bin/kodi -geometry +0+0