В рекомендации утилита синтаксис POSIX ( в частности , # 13) указывают , что за коммунальные услуги , которые ожидают имя файла для чтения из, -средства стандартного ввода, а также за коммунальные услуги , которые ожидают имя файла для записи в, -средства стандартный вывод. Например, cat somefile -копирует содержимое somefileв свой стандартный вывод, за которым следует то, что он читает на своем стандартном вводе.
Это руководство не относится к cdкоманде, так как она не читает и не записывает в файл. cdделает что-то другое: аргумент -означает «предыдущий каталог». Команда cd -эквивалентна cd "$OLDPWD" && pwd. Это поведение специфично для cdкоманды и для таких команд, которые непосредственно связаны с командой pushd.
Обратите внимание, что -это операнд, а не опция. Только аргументы, которые начинаются с -и не являются просто -или --являются вариантами. Основной смысл того, чтобы быть операндом, заключается в том, что --это не влияет на его особое значение. Например, cd -- -Pизменения в подкаталоге, который называется -P, но cd -- -такой же cd -, как и в каталоге, который называется -. Точно так cat -- -же не читает из файла, названного, -но из стандартного ввода.
cdэто встроенная, а не внешняя команда (и при этом она не может работать как единое целое).cd -таким образом, функция уровня оболочки.