bash $ 0 запускает фоновый процесс? - PullRequest
0 голосов
/ 19 июня 2020

Я знаю, echo $0 возвращаю, в какой оболочке я нахожусь, но когда я запускаю только $0 в терминале, он ничего не возвращает, и когда я пытаюсь закрыть терминал, он говорит, что в терминале все еще работает программа. Я также пробовал запустить $1 $2 в терминале, но при закрытии он не подсказывал. Запуск $0 в терминале запускает фоновый процесс или мне что-то не хватает?

1 Ответ

2 голосов
/ 19 июня 2020

Я знаю, echo $0 возвращает, в какой оболочке я нахожусь, но когда я запускаю $0 в терминале, он ничего не возвращает.

Поскольку $0 содержит команду оболочки, которая запуск сценария оболочки или интерактивного сеанса; когда вы набираете $0 в терминале, вы вызываете имя команды в переменной аргумента $0.

Когда $0 содержит bash; Набрав $0 в терминале, вы просто наберете bash. Затем он запускает другой bash в рамках первого в качестве под-оболочки.

Когда он запускает другую оболочку, похоже, что он ничего не сделал, но запустил другой сеанс оболочки с теми же переменными среды и настройки. Приглашение оболочки и текущий каталог точно такие же, поэтому похоже, что ничего не произошло.

Если вы затем попытаетесь закрыть окно терминала, когда была вызвана суб-оболочка, она сообщит вам, что все еще есть фоновые процессы выполняются.

Когда вы закрываете окно терминала, происходит следующее: он сигнализирует об окончании работы первой оболочки более высокого уровня P rocess ID, но эта оболочка PID знает, что у нее есть дочерний элемент PID все еще прикреплен и просто сообщает вам об этом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...