![이 명령을 터미널에서만 실행할 수 있고 시작 명령이나 실행 명령 GUI 상자에서는 실행할 수 없는 이유는 무엇입니까?](https://linux55.com/image/12477/%EC%9D%B4%20%EB%AA%85%EB%A0%B9%EC%9D%84%20%ED%84%B0%EB%AF%B8%EB%84%90%EC%97%90%EC%84%9C%EB%A7%8C%20%EC%8B%A4%ED%96%89%ED%95%A0%20%EC%88%98%20%EC%9E%88%EA%B3%A0%20%EC%8B%9C%EC%9E%91%20%EB%AA%85%EB%A0%B9%EC%9D%B4%EB%82%98%20%EC%8B%A4%ED%96%89%20%EB%AA%85%EB%A0%B9%20GUI%20%EC%83%81%EC%9E%90%EC%97%90%EC%84%9C%EB%8A%94%20%EC%8B%A4%ED%96%89%ED%95%A0%20%EC%88%98%20%EC%97%86%EB%8A%94%20%EC%9D%B4%EC%9C%A0%EB%8A%94%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
$(run-parts --list --reverse --regex '^KeePassXC-[[:digit:]]+\.[[:digit:]]+\.[[:digit:]]-x86_64\.AppImage' bin | head -n 1)
(위 명령의 목적은 에 있는 KeePassXC의 최신 버전을 실행하는 것입니다 ~/bin
. KeePass를 업그레이드할 때마다 시작 항목을 수정하고 싶지 않습니다.)
위의 명령이 작동하는 것 같습니다터미널에서 실행하는 경우. 그러나 Alt+를 눌러 F2GUI "명령 실행" 상자를 가져오면 오류가 발생합니다.
Failed to execute child process "$(run-parts" (No such file or directory)
게다가 시작 응용 프로그램에 다음 명령을 입력하려고 하면 비슷한 문제가 발생합니다.
Could not execute '$(run-parts --list --reverse --regex '^KeePassXC-[[:digit:]]+\.[[:digit:]]+\.[[:digit:]]-x86_64\.AppImage' bin | head -n 1)'
Failed to execute child process "$(run-parts" (No such file or directory)
/
내 실수는 응용 프로그램 실행/명령 실행 GUI 상자가 대신 명령을 실행한다는 것일 수 있다고 생각합니까 ~
? 그래서 나는 내 명령을 "수정"했습니다. 즉, bin
명령을 삭제하고 이것으로 바꾸었지만 /home/m/bin
도움이 되지 않았습니다.
터미널이 아닌 다른 곳에서는 이 명령을 실행할 수 없는 이유는 무엇입니까?
답변1
에러 메시지:
Could not execute '$(run-parts --list --reverse --regex '^KeePassXC-[[:digit:]]+\.[[:digit:]]+\.[[:digit:]]-x86_64\.AppImage' bin | head -n 1)'
Failed to execute child process "$(run-parts" (No such file or directory)
이는 명령을 입력하는 상자가 쉘이 아니라 대신 리터럴 명령을 실행하려고 함을 나타냅니다. 셸은 명령을 구문 분석하고, 명령 대체를 확장하고, 파이프라인을 실행하는 run-parts
등의 작업을 수행합니다 head
.
상자는 쉘이 아니고 명령도 아니기 때문에간단한 명령(옵션이 있는 명령), 원래 명령을 호출해야 합니다.껍질을 벗긴. 다음 명령을 사용하여 GUI 상자에서 이 작업을 수행할 수 있습니다.
sh -c 'your command'
your command
원래 실행하려고 했던 명령은 어디에 있습니까? 작은따옴표 인수에는 sh -c
다른 작은따옴표가 포함될 수 없으므로 작은따옴표를 큰따옴표로 바꾸십시오.