我想在输入新目录时执行特定的bash函数.有些想法:
alias cd="cd $@ && myfunction"
Run Code Online (Sandbox Code Playgroud)
$@
在那里不起作用,添加反斜杠也无济于事.我也有点担心与CD搞乱,这将是很好,如果这个工作了哪些改变目录,像其他的命令pushd
和popd
.
有更好的别名/命令吗?
Pau*_*ce. 21
别名不接受参数.你应该使用一个功能.每次发出提示时都不需要自动执行它.
function cd () { builtin cd "$@" && myfunction; }
Run Code Online (Sandbox Code Playgroud)
该builtin
关键字允许您重新定义一个内置猛砸而无需创建一个递归.引用参数使其在目录名称中有空格时起作用.
该猛砸文档说:
对于几乎所有目的,shell函数优先于别名.
fal*_*tro 19
我能想到的最简单的解决方案就是这个
myfunction() {
if [ "$PWD" != "$MYOLDPWD" ]; then
MYOLDPWD="$PWD";
# strut yer stuff here..
fi
}
export PROMPT_COMMAND=myfunction
Run Code Online (Sandbox Code Playgroud)
应该这样做.它将与所有命令一起使用,并在显示提示之前触发.