在shell command line中()与{}都可以将多个命令作群组化处理,但若从技术细节上,却是很不一样的:
():将command group置于sub-shell去执行,也称nested sub-shell。
{}:则是在同一个shell内完成,也称non-named command group。
注:{}与() 中的命令要用; 分隔开。只有一个时不需要用; 。
通常而言,若所作的修改是临时的,且不想影响原有或以后的设定,那就nested sub-shell。反之,则用non-named command group。
所谓function,就是用一个名字去命名一个command group,然后再调用这个名字去执行command group。
在bash中,function的定义有两种:
方式一:
function function_name {
command1
command2
command3
....
}
方式二:
function_name() {
command1
command2
command3
....
}
用哪一种方式无所谓,知识若碰到所定义的名称与现有的命令或别名(Alias)冲突的话,方式二或许会失败。
在shell中定义function,除了可用unset function_name取消外,一旦退出shell,function也跟着取消。