「內建」bash 指令是如何定義的?

「內建」bash 指令是如何定義的?

我注意到類似的命令cd ..實際上被轉換為builtin cd ..然後執行。但如何builtin定義呢?不顯示任何內容,which builtin也不在等待。/bin/usr/bin

答案1

內建函數只是 bash 的一部分。您可以使用 來確定指令是否是內建的type。例如:

$ type export cd source alias
export is a shell builtin
cd is a shell builtin
source is a shell builtin
alias is a shell builtin

許多內建命令是內建的,因為它們無法以其他方式工作。 cdsource都是例子。

其他內建函數只是為了提高效率而內建的。 test(又稱[...]) 和echo是範例。

要了解更多信息,請參閱SHELL BUILTIN COMMANDS的部分man bash或在線bash手冊。若要取得可用內建命令的列表,請help在命令提示字元中執行。要獲取有關特定內建函數的信息,例如test,運行help test。請注意,它將help test提供有關 bashtest內建命令的信息,而相比之下,man test它可能會提供有關外部test命令的幫助。

哪些指令既可以作為可執行指令,也可以作為內建指令

使用該-a選項,type將顯示包含指定命令的所有位置。例如:

$ type -a echo
echo is a shell builtin
echo is /bin/echo

內建可用時如何使用可執行文件

如果由於某種奇怪的原因,您想使用特定的可執行檔而不是內建的 shell,您所要做的就是指定路徑:

$ /bin/echo "This is not the builtin"
This is not the builtin

由於內建函數通常具有更多功能,因此這通常僅對相容性測試有用。

當 shell 內建函數被函數或別名隱藏時如何執行它

如果有選擇,shell 通常會選擇執行內建指令。例外情況是使用者定義了同名的別名或函數。如果您想確保正在執行內建命令,請使用以下builtin命令:

$ builtin echo  1 2 3
1 2 3

相關內容