Bash riesce ad interpretare un insieme di comandi interni (internal command o built-in command), implementati all’interno di Bash. L’elenco di tali comandi è ottenibile tramite il comando interno help.
____________________________________________________________________
SINTASSI
$ help [cmd]
DESCRIZIONE
Se nessun comando è specificato, help mostra l’elenco dei comandi interni, come quello riportato di seguito:
GNU bash, version 2.05b.0(1)-release (i686-pc-linux-gnu) These shell commands are defined internally. Type `help' to see this list. Type `help name' to find out more about the function `name'. Use `info bash' to find out more about the shell in general. Use `man -k' or `info' to find out more about commands not in this list. A star (*) next to a name means that the command is disabled. %[DIGITS | WORD] [&] (( expression )) . filename : [ arg... ] [[ expression ]] alias [-p] [name[=value] ... ] bg [job_spec] bind [-lpvsPVS] [-m keymap] [-f fi break [n] builtin [shell-builtin [arg ...]] case WORD in [PATTERN [| PATTERN]. cd [-L|-P] [dir] command [-pVv] command [arg ...] compgen [-abcdefgjksuv] [-o option complete [-abcdefgjksuv] [-pr] [-o continue [n] declare [-afFirtx] [-p] name[=valu dirs [-clpv] [+N] [-N] disown [-h] [-ar] [jobspec ...] echo [-neE] [arg ...] enable [-pnds] [-a] [-f filename] eval [arg ...] exec [-cl] [-a name] file [redirec exit [n] export [-nf] [name[=value] ...] or false fc [-e ename] [-nlr] [first] [last fg [job_spec] for NAME [in WORDS ... ;] do COMMA for (( exp1; exp2; exp3 )); do COM function NAME { COMMANDS ; } or NA getopts optstring name [arg] hash [-lr] [-p pathname] [-dt] [na help [-s] [pattern ...] history [-c] [-d offset] [n] or hi if COMMANDS; then COMMANDS; [ elif jobs [-lnprs] [jobspec ...] or job kill [-s sigspec | -n signum | -si let arg [arg ...] local name[=value] ... logout popd [+N | -N] [-n] printf format [arguments] pushd [dir | +N | -N] [-n] pwd [-PL] read [-ers] [-u fd] [-t timeout] [ readonly [-anf] [name[=value] ...] return [n] select NAME [in WORDS ... ;] do CO set [--abefhkmnptuvxBCHP] [-o opti shift [n] shopt [-pqsu] [-o long-option] opt source filename suspend [-f] test [expr] time [-p] PIPELINE times trap [arg] [signal_spec ...] or tr true type [-afptP] name [name ...] typeset [-afFirtx] [-p] name[=valu ulimit [-SHacdflmnpstuv] [limit] umask [-p] [-S] [mode] unalias [-a] [name ...] unset [-f] [-v] [name ...] until COMMANDS; do COMMANDS; done variables - Some variable names an wait [n] while COMMANDS; do COMMANDS; done { COMMANDS ; }
Quando viene impartito un comando, la shell tenta di eseguirlo effettuando, nell’ordine, i seguenti passi:
|
È opportuno notare il fatto che nell’elenco delle directory contenute nella variabile d’ambiente PATH, per motivi di sicurezza, non è compresa la working directory (‘.’). Infatti, includendo tale directory nell’elenco (in modo particolare all’inizio dell’elenco), un utente malizioso potrebbe aver chiamato un file presente nella sua directory con lo stesso nome di quello di un comando di sistema di uso frequente, ad esempio ls. In questo modo, se il superuser ha, in un certo momento, la working directory impostata su quella dell’utente in questione e digita il comando ls (o un alias che si riferisce ad esso), lancia in realtà il comando che si trova nella working directory, ovvero lancia in esecuzione tale file con i privilegi di superuser. Il processo da questo lanciato potrebbe fare qualunque cosa sul filesystem! Tale directory può comunque essere aggiunta in coda all’elenco delle directory (strategia più
sicura)8
con il comando
|
(figura forking processi) [da completare ...]
La shell può essere terminata per mezzo del comando interno exit.