在我的.bash_profile
文件中,我想设置一个命令别名,它是两个依次执行的命令。第一个命令从命令行获取一个参数,第二个命令实际上是脚本(位于~/bin
具有执行权限的位置)。
我的个人资料文件有这样的:
alias pd='function pd2() { pushd "$@"; set_title_tab; }'
我尝试在 shell 中执行它,如下所示:
$ pd ~/Documents/
我收到一个错误:
-bash:意外标记“~/Documents/”附近出现语法错误
set_title_tab
是一个由 William Scott 编写的 shell 脚本
有更好的方法来实现这一点吗?
答案1
别名不支持输入参数,并且不需要将函数包装在别名中。只需使用一个函数:
pd() {
pushd "$@"
set_title_tab
}
pd ~/Documents
答案2
为什么不是这个:
pd () { pushd "$@"; set_title_tab; }
您现在拥有的是别名内的函数定义,这是......不寻常的。一旦定义了一个函数(就像我pd
上面所做的那样),您就可以像任何其他命令一样使用它。