이 명령을 터미널에서만 실행할 수 있고 시작 명령이나 실행 명령 GUI 상자에서는 실행할 수 없는 이유는 무엇입니까?

이 명령을 터미널에서만 실행할 수 있고 시작 명령이나 실행 명령 GUI 상자에서는 실행할 수 없는 이유는 무엇입니까?
$(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다른 작은따옴표가 포함될 수 없으므로 작은따옴표를 큰따옴표로 바꾸십시오.

관련 정보