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