Запустити програму із сценарію оболонки, але вести себе як один процес?


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 - firefox gedit &", і так gedit з'являється в запуску як Firefox. Але це не працює для більшості додатків.
zubozrout

Проблема, швидше за все, полягає в тому, що, хоча я створив новий процес, він використовує обидва імена, оригінальний та нещодавно визначений. PS вихід: 1000 6151 0,0 0,0 13720 944 балів / 2 R + 10:49 0:00 grep --color = автоматичний firefox | 10006153 0,0 0,0 13716 940 балів / 2 S + 10:49 0:00 grep --color = auto gedit
zubozrout

Чи можу я запитати, чому ви використовуєте &в кінці своєї команди? Це запустить команду в нижній частині, що саме ви не хочете.
Андреа Корбелліні

Так, я просто пробував це в терміналі, а не в сценарії оболонки.
zubozrout

2
Отже, я прочитав ваше попереднє запитання, і, схоже, ви нерозумієте деякі речі. Ви плутаєте процес з нульовим аргументом з PID з пусковим інструментом . І ви також ставите неправильне запитання. Що ви хочете запитати спочатку: як тире асоціює пускові пристрої з процесами? Як тільки ви знайдете відповідь на це питання, ви також знайдете відповідь на своє початкове запитання.
Андреа Корбелліні
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.