Головки Mac Peenhammer

Первая часть этого ответа заключается в том, что jobsи dirsявляются встроенными -ins, поэтому обычно bash просто запускает их напрямую, а не вызывает подоболочку.

Это верно для случаев, когда есть конвейеры или подстановка команд($(jobs))или подстановка процессов(<(jobs)).

Это не относится к запуску команды в фоновом режиме(jobs &)или явному запросу подоболочки (с помощью ( jobs ).)

Это объясняет последнюю часть вашего вопроса. Когда вы запускаете jobsв подоболочке, он действительно показывает задания для самой подоболочки.

Вот хорошая демонстрация этой концепции:

$ sleep 1001 &
[1] 15927
$ sleep 1002 &
[2] 15940
$ jobs
[1]-  Running                 sleep 1001 &
[2]+  Running                 sleep 1002 &
$ ( sleep 1003 & jobs )
[1]+  Running                 sleep 1003 &
$ jobs
[1]-  Running                 sleep 1001 &
[2]+  Running                 sleep 1002 &

Вы увидите, что в случае, когда jobsвыполняется в подоболочке, будут отображаться только задания этой подоболочки (, в данном случае sleep 1003).

Теперь, чтобы завершить, нам нужно обратиться к средней части вопроса, вот почему dirs &(, который действительно работает в подоболочке, как и ( dirs )), по-прежнему будет показывать каталоги, сохраненные в стеке pushd.

Оказывается, это связано с тем, что оболочка экспортирует список каталогов в специальную переменную-массив DIRSTACK, которая затем наследуется подоболочками. (Подробнее оDIRSTACKможно прочитать здесь .)

Один из способов продемонстрировать, как это работает, — использовать pushdв подоболочке и посмотреть, как это не влияет на стек каталогов исходной оболочки:

$ dirs
~
$ pushd ~/tmp
~/tmp ~
$ ( dirs; pushd / >/dev/null; dirs )
~/tmp ~
/ ~/tmp ~
$ dirs
~/tmp ~

Я считаю, что это должно касаться всех вопросов, о которых вы спрашивали.


ОБНОВЛЕНИЕ:bash имеет специальное положение, позволяющее jobs | lessработать, запуская команду jobsв текущей оболочке (, чего нет в других встроенных -модулях.)

В коде есть проверка, хранящаяся в переменной jobs_hack, которая позже проверяется, чтобы заставить ее работать без создания подпрограммы -и разрешить передачу вывода jobsдругой команде.

См. здесь для соответствующей части исходного кода, которая это реализует. (Начиная с bash 4.4)

0
05.09.2020, 01:59
1 ответ

Вы можете удалить iTunes, чтобы это было исправлено.

Я тоже не пользуюсь iCloud, но он никогда не спрашивал меня о чем-либо . Сделай это:
Apple Menu-->Preferences-->iCloud(первый столбец, третья строка для меня)
Убедитесь, что ничего не заполнено, это должно выглядеть так:

enter image description here

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

0
28.04.2021, 23:07

Теги

Похожие вопросы