I want to customize the functionality of cd command as per my needs. I define following function - function cd () { cd $@ && pushd $@; }The intent of this function is to automatically push the directory onto the stack so that it saves me the effort to manually type pushd . everytime.However the above function is an infinitely recursive function as the call to cd is interpreted to be the function itself and not the cd built-in.How do I reference the cd built-in in this function? I know that aliases can be escaped using \. What is the way to escape functions or reference built-ins in a more explicit way?Note: I do not want to rename my function to anything else.
How to invoke a shell built-in explicitly?
bash;shell script;shell builtin
The command builtin forces a command name to be interpreted as a built-in or external command (skipping alias and function lookup). It is available in all POSIX shells including bash.cd () { command cd $@ && pushd $@; }(Note that this example is a bad one: it doesn't work with relative paths, and you might as well just type pushd in the first place.)In bash and zsh (but not ksh), you can use builtin to force a command name to be interpreted as a builtin, excluding aliases, functions and external commands.