I want to customize the functionality of cd
command as per my needs.
I defined the 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 .
every time.
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.
Best Answer
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.(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.