用户定义的功能
通常,bash函数永久存储在bash
启动脚本中。
- 系统范围内的启动脚本:
/etc/profile
用于登录Shell和/etc/bashrc
交互式Shell。
- 用户定义启动脚本:
~/.bash_profile
用于登录Shell和~/.bashrc
交互式Shell。
- 有关交互式/登录shell的更多信息
man
,请参见INVOCATION部分的bash 页面。
当bash启动时,用户定义的shell函数会动态加载到哈希(或查找表)中。在bash源文件variable.c
中,表的定义为:
/* The list of shell functions that the user has created, or that came from
the environment. */
HASH_TABLE *shell_functions = (HASH_TABLE *)NULL;
用户定义的函数可以使用bash declare
命令列出,其他shell仍在使用typeset
。在bash中declare
已取代typeset
命令。
declare -f
这些函数在bash shell的生存期内存在于内存中。
Shell定义(内置)函数
这些都是常见的功能,例如echo
,printf
,cd
和:
。它们被编译成链接到bash
可执行文件的库。与加载外部定义相比,将定义构建到可执行文件中可以节省时间。这些功能的定义(保存在.def
解析为C源代码的源文件中)保存在builtins
bash源代码的目录中。
除了有用的信息:有关shell内置命令的信息,请使用help <command>
。例如
help # list all builtins
help declare # info and options for declare
help -m declare # gives man style information for declare
cd is a shell builtin
。看看您的shell(zsh?)的手册页