&
Оператор посылает процесс в фоновом режиме; как cd
можно запустить без аргументов, вы запускаете его и отправляете в фоновый режим. Если вы возьмете справочную страницу:
ИМЯ
cd - изменить рабочий каталог оболочки.
СИНТАКСИС
cd
[ -L
| -P
] [ dir ]
ОПИСАНИЕ
Измените рабочий каталог оболочки.
Измените текущий каталог на DIR . DIR по умолчанию - это значение HOME
переменной оболочки.
Переменная CDPATH
определяет путь поиска для каталога, содержащего
DIR . Альтернативные имена каталогов в CDPATH
двоеточии (:).
Нулевое имя каталога совпадает с текущим каталогом. Если DIR начинается с косой черты ( /
), то CDPATH
не используется.
Если каталог не найден и установлена опция оболочки cdable_vars
, предполагается, что слово является именем переменной. Если эта переменная имеет значение, ее значение используется для DIR .
Опции:
-L
принудительно использовать символические ссылки,
-P
используя физическую структуру каталогов без следующих символических ссылок
По умолчанию используются символические ссылки, как если бы они -L
были указаны.
Статус выхода:
Возвращает 0, если каталог изменился; ненулевое в противном случае.
СМОТРИТЕ ТАКЖЕ
bash
(1)
РЕАЛИЗАЦИЯ
GNU bash, версия 4.1.5 (1) -релиз (i486-pc-linux-gnu)
Copyright (C) 2009 Free Software Foundation, Inc.
Лицензия GPLv3 +: GNU GPL версии 3 или новее
Вы можете видеть, что аргументы необязательны. Так
cd &
обрабатывается как
cd
и затем отправляется на задний план. Когда cd
вызывается без аргумента, обработка не требуется. Таким образом, он уходит на задний план, как «сделано» (обработано).
Некоторая информация о &
Bash &
(амперсанд) - встроенный оператор управления, используемый для разветвления процессов. Со страницы руководства Bash: «Если команда завершается оператором управления &
, оболочка выполняет команду в фоновом режиме в подоболочке».
При входе в интерактивную оболочку процессу присваивается номер задания и отображается дочерний PID. Номер задания ниже один.
bash$ sleep 30 &
[1] 3586
Обратите внимание, что когда процесс разветвляется, дочерний PID сохраняется в специальной переменной $!
bash$ echo $!
3586
Вы можете прекратить работу по номеру вакансии следующим образом:
bash$ jobs
[1]+ Running sleep 30 &
bash$ kill %1
[1]+ Terminated sleep 30
bash$