쉘 스크립트에서 프로그램을 실행하지만 하나의 프로세스로만 작동합니까?


12

쉘 스크립트에서 응용 프로그램을 실행할 수 있지만 다른 프로세스를 만들 수있는 방법이 있습니까? 하나의 프로세스처럼 보이기를 원합니다 . 쉘 스크립트가 새로운 프로세스로 대체되는지 또는 호출 된 애플리케이션이 종료 된 후에도 계속되는지 여부는 중요하지 않습니다.
이것은 또한 이전 질문을 해결해야합니다 : /ubuntu/247632/is-there-a-way-to-associate-additional-application-launcher-with-an-app
도움을 주셔서 대단히 감사합니다 .

답변:


7

다음 exec명령을 사용할 수 있습니다 .

$ help exec
exec: exec [-cl] [-a name] [command [arguments ...]] [redirection ...]
    Replace the shell with the given command.

    Execute COMMAND, replacing this shell with the specified program.
    ARGUMENTS become the arguments to COMMAND.  If COMMAND is not specified,
    any redirections take effect in the current shell.

    Options:
      -a name   pass NAME as the zeroth argument to COMMAND
      -c        execute COMMAND with an empty environment
      -l        place a dash in the zeroth argument to COMMAND

    If the command cannot be executed, a non-interactive shell exits, unless
    the shell option `execfail' is set.

    Exit Status:
    Returns success unless COMMAND is not found or a redirection error occurs.

예:

user@host:~$ PS1="supershell$ "
supershell$ bash
user@host:~$ PS1="subshell$ "
subshell$ exec echo hello
hello
supershell$ 

보다시피, 서브 쉘은로 대체됩니다 echo.


답변 주셔서 감사합니다. 예를 들어 "exec -a firefox gedit &"를 실행하면 gedit가 실행 프로그램에 Firefox로 나타납니다. 그러나 대부분의 앱에서는 작동하지 않습니다.
zubozrout

문제는 아마도 새로운 프로세스를 만들었더라도 원래 이름과 새로 정의 된 이름을 모두 사용한다는 사실입니다. PS 출력 : 1000 6151 0.0 0.0 13720944 pts / 2 R + 10:49 0:00 grep --color = auto 파이어 폭스 | 10006153 0.0 0.0 13716940 pts / 2 S + 10:49 0:00 grep --color = auto gedit
zubozrout

&명령 끝에 왜 사용 하고 있는지 물어봐도 될까요? 그러면 서브 쉘에서 명령이 실행되는데, 이는 정확히 원하지 않는 것 입니다.
Andrea Corbellini

예, 쉘 스크립트가 아닌 터미널에서 시도했습니다.
zubozrout

2
그래서, 나는 당신의 이전 질문을 읽었으며 당신이 어떤 것들을 오해하고있는 것처럼 보입니다. 당신은 혼동 과정제로 번째 인수PID대시 런처 . 그리고 당신은 또한 잘못된 질문을하고 있습니다. 먼저 물어보고 싶은 것은 : 대시는 어떻게 런처를 프로세스에 연관 시키는가? 해당 질문에 대한 답변을 찾으면 원래 질문에 대한 답변도 찾을 수 있습니다.
Andrea Corbellini
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.