Answers:
别名几乎是文本替代。因此,在别名定义之后,键入doit
等同于键入cd ~/some/dir; ./my_app; cd -
。这是一个语法正确的命令列表,其返回值是序列中最后一个命令的返回值cd -
。
其他答案显示了保存中间命令状态并返回它的一般方法。但是,在这种特定情况下,有一种更好的方式来表达这一系列的操作:不是更改到另一个目录然后再更改,而是执行需要子shell内不同的当前目录的操作,以便当前目录的shell根本不会改变。
doit () {
(cd ~/some/dir && ./my_app "$@")
}
我做了两个额外的改进:
&&
而不是;
在命令之间使用,以便my_app
在cd
命令失败时不尝试执行。my_app
:如果您运行doit foo bar
,my_app
被调用,有两个参数foo
和bar
。cd
在函数中运行并使其影响调用者。