web-dev-qa-db-ja.com

シェルスクリプトからプログラムを実行しますが、1つのプロセスとしてのみ動作しますか?

シェルスクリプトからアプリケーションを実行できるが、別のプロセスを作成できない方法はありますか。 1つのプロセスだけのように見せたい。シェルスクリプトが新しいプロセスに置き換えられるかどうか、または呼び出されたアプリケーションが終了した後に続行するかどうかは関係ありません。
これは、以前の質問も解決するはずです。 https://askubuntu.com/questions/247632/is-there-a-way-to-associate-additional-application-launcher-with-an -app
手伝ってくれてありがとうございます。

11
zubozrout

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に置き換えられています。

7