누군가 내 프로필에 대한 단서를 줄 수 있나요 .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
).
두 번째 예에서는
exec WINDOWING=x11 /usr/bin/kodi -geometry +0+0
이제 이 exec
명령을 사용하여 이러한 환경 변수를 설정할 수 없습니다. 대신 WINDOWING
변수를 설정하고 내보낼 수 있습니다.앞으로옮기다 kodi
:
export WINDOWING=x11
exec /usr/bin/kodi -geometry +0+0