mirror of
git://git.code.sf.net/p/zsh/code
synced 2024-11-15 13:34:18 +01:00
38 lines
1.7 KiB
Plaintext
38 lines
1.7 KiB
Plaintext
texinode(Command Execution)(Functions)(Redirection)(Top)
|
|
chapter(Command Execution)
|
|
ifzman(\
|
|
sect(Command Execution)
|
|
)\
|
|
cindex(command execution)
|
|
cindex(execution, of commands)
|
|
cindex(command not found, handling of)
|
|
findex(command_not_found_handler)
|
|
If a command name contains no slashes, the shell attempts to locate
|
|
it. If there exists a shell function by that name, the function
|
|
is invoked as described in noderef(Functions). If there exists
|
|
a shell builtin by that name, the builtin is invoked.
|
|
|
|
vindex(path, use of)
|
|
Otherwise, the shell searches each element of tt($path) for a
|
|
directory containing an executable file by that name. If the
|
|
search is unsuccessful, the shell prints an error message and returns
|
|
a nonzero exit status.
|
|
|
|
If execution fails because the file is not in executable format,
|
|
and the file is not a directory, it is assumed to be a shell
|
|
script. tt(/bin/sh) is spawned to execute it. If the program
|
|
is a file beginning with `tt(#!)', the remainder of the first line
|
|
specifies an interpreter for the program. The shell will
|
|
execute the specified interpreter on operating systems that do
|
|
not handle this executable format in the kernel.
|
|
|
|
If no external command is found but a function tt(command_not_found_handler)
|
|
exists the shell executes this function with all
|
|
command line arguments. The function should return status zero if it
|
|
successfully handled the command, or non-zero status if it failed.
|
|
In the latter case the standard handling is applied: `command not
|
|
found' is printed to standard error and the shell exits with status 127.
|
|
Note that the handler is executed in a subshell forked to execute
|
|
an external command, hence changes to directories, shell parameters,
|
|
etc. have no effect on the main shell.
|