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