터미널 창에서 시작된 GUI 응용 프로그램을 닫지 않고 터미널 창을 자동으로 닫는 방법은 무엇입니까?

터미널 창에서 시작된 GUI 응용 프로그램을 닫지 않고 터미널 창을 자동으로 닫는 방법은 무엇입니까?

현재 저는 Obsidian을 먼저 열고 Vault 브라우저를 사용하는 대신 파일 탐색기 자체에서 Obsidian Notes Vault를 여는 방법을 알아내려고 노력 중입니다.

이를 위해 다음 명령이 작동합니다(저는 Obsidian Notes Appimage를 사용하고 있으며 패키지 스타일 설치를 선호합니다).

#!/bin/bash
/home/username/Desktop/Obsidian-1.5.11.AppImage "obsidian://open?vault=testvault"

(볼트 이름과 볼트 폴더 이름은 testvault)

.shVault 폴더 자체에 저장된 파일 에 명령을 넣었습니다 .

그런 다음 Vault 폴더에서 터미널을 엽니다(스크립트를 실행하기 위해 두 번 클릭하면 명령이 예상대로 작동하지 않고 지정된 Vault가 열리지 않고 마지막으로 열린 Vault만 열리기 때문에 터미널을 여는 것이 필요함). 그런 다음 파일을 실행합니다 .sh. .

./openvault.sh

이제 제가 하고 싶은 일은 Obsidian Notes 애플리케이션을 닫지 않고 Vault를 연 후 터미널을 자동으로 닫는 것입니다.

이를 위해 다음을 시도했습니다.

#!/bin/bash
/home/username/Desktop/Obsidian-1.5.11.AppImage "obsidian://open?vault=testvault" & disown && exit

# `&&` after `disown` so that `exit` only gets executed after disown is successfully executed

이제 이것은 부분적으로만 작동합니다. 명령 을 실행하도록 관리합니다 disown. 이렇게 하면 터미널 애플리케이션의 닫기 버튼을 사용하여 터미널을 닫을 때 Obsidian Notes가 계속 실행됩니다.

그러나 exit명령이 실행되지 않습니다. 어떻게 실행하게 할 수 있나요?

명령을 실행할 때의 터미널 로그는 다음과 같습니다.

2024-03-22 09:26:20 Loading main app package /tmp/.mount_Obsidi8hbnvd/resources/obsidian.asar
xdg-settings: default-url-scheme-handler not implemented for xfce
Received callback URL obsidian://open?vault=tesvault
2024-03-22 09:26:21 Checking for update using Github
2024-03-22 09:26:21 Success.
2024-03-22 09:26:21 Latest version is 1.5.11
2024-03-22 09:26:21 App is up to date.

터미널이 프롬프트로 돌아가는 대신 커서는 로그의 마지막 줄 아래에서 계속 깜박입니다 username@machinename:/current/working/directory$.

답변1

  1. 스크립트는 새로운 프로세스에서 실행됩니다. 자체적으로는 상위 대화형 셸에서 종료할 수 없습니다.
  2. 스크립트는 새로운 프로세스에서 실행됩니다. dismiss만약 그만두면 아이들이 필요하지 않을 것입니다.
  3. 대본할 수 있다 kill부모 프로세스. 아니요!
  4. 대화형 쉘이 명령을 사용하여 종료하려면 대화형 쉘이 이 작업을 수행해야 합니다. 이 경우 명령을 실행하고 종료하려면 별칭(내 bash 매뉴얼, 섹션 6.6) 또는 쉘 함수(3.3)를 정의해야 할 수도 있습니다. 또는 exec ./openvault.sh대화형 셸을 스크립트로 바꾸는 등의 스크립트를 호출할 수 있습니다 .
  5. 프로그램이 한동안 계속 실행되는 경우(귀하의 예에서 이를 나타내는 것 같습니다) 터미널에서 프로그램을 분리할 수 있습니다. Linux에서는 setsid예를 들어 다음을 사용하여 이 작업을 수행할 수 있습니다.setsid /home/username/Desktop/Obsidian-1.5.11.AppImage ...
  6. 데스크탑 파일에 무엇이 있는지 찾아서 그렇게 하는 것이 좋습니다. 결국 데스크탑에서 파일 이름을 바꾸거나 파일을 폴더로 이동할 수도 있습니다. 이미 명령 한두 개만 입력했을 수도 있습니다.

관련 정보