在 .bash_profile 中合并两个命令

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)


jw0*_*013 5

为什么不是这个:

pd () { pushd "$@"; set_title_tab; }
Run Code Online (Sandbox Code Playgroud)

您现在拥有的是别名中的函数定义,这是……不寻常的。一旦你定义了一个函数(就像我在pd上面所做的那样),你就可以像任何其他命令一样使用它。