I use Bash as my interactive shell and I was wondering if there was an easy way to get Bash to run a system command instead of a shell builtin command in the case where they both share the same name.For example, use the system kill (from util-linux) to print the process id (pid) of the named process(es) instead of sending a signal:$ /bin/kill -p httpd2617...Without specifying the full path of the system command, the Bash builtin is used instead of the system command. The kill builtin doesnt have the -p option so the command fails:$ kill -p httpdbash: kill: p: invalid signal specificationI tried the answers listed in Make bash use external `time` command rather than shell built-in but most of them only work because time is actually a shell keyword  not a shell builtin.Other than temporarily disabling the Bash builtin with enable -n kill, the best solution Ive seen so far is to use:$(which kill) -p httpdAre there other easier (involve less typing) ways to execute an external command instead of a shell builtin?Note that kill is just an example and Id like a generalised solution similar to the way that prefixing with the command builtin prevents functions which have the same name as an external command from being run. In most cases, I usually prefer to use the builtin version as it saves forking a new process and some times the builtin has features that the external command doesnt.
Use system command instead of Bash builtin without specifying the full path
bash;shell builtin
Assuming env is in your path:env kill -p httpenv runs the executable file named by its first argument in a (possibly) modified environment; as such, it does not know about or work with shell built-in commands.This produces some shell job control cruft, but doesn't rely on an external command:exec kill -p bash &exec requires an executable to replace the current shell, so doesn't use any built-ins. The job is run in the background so that you replace the forked background shell, not your current shell.