Cd-Command

cd 外部命令有什麼意義?

  • August 18, 2019

正如這個很好的答案cd中所引用的,POSIX 系統除了內置的 shell 之外還有一個外部二進製文件。在 OS X 10.8 上是/usr/bin/cd. 您不能像內置一樣使用它,cd因為它在更改自己的工作目錄後立即退出。它的用途是什麼?

它主要用於確保 POSIX 工具箱在 shell 內部和外部都可用(請參閱要求這些工具箱的 POSIX 基本原理)。

對於cd, 這並不是非常有用,但請注意cd更改目錄但有其他副作用:它返回一個退出狀態,幫助確定您是否能夠chdir()進入該目錄,並輸出一個有用的錯誤消息,解釋為什麼你不能chdir()當你不能。

例子:

dirs_i_am_able_to_cd_into=$(find . -type d -exec cd {} \; -print)

另一個潛在的副作用是目錄的自動掛載。

在少數係統上,標準 shell 內置命令的大多數外部命令都作為符號連結實現,指向相同的腳本:

#! /bin/sh -
"${0##*/}" "$@"

那就是啟動一個shell並執行其中的內置程序。

其他一些系統(如 GNU)將實用程序作為真正的可執行命令,當行為與 shell 內置版本不同時可能會導致混淆。

引用自:https://unix.stackexchange.com/questions/50058