What is the difference between the terms âprogramâ, âcommandâ and âfunctionâ in Linux & Unix?

Clash Royale CLAN TAG#URR8PPP
up vote
4
down vote
favorite
I would like to know whether the commands that we call in the shell are functions or programs?
shell command-line function bash-functions
New contributor
Lion is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
add a comment |Â
up vote
4
down vote
favorite
I would like to know whether the commands that we call in the shell are functions or programs?
shell command-line function bash-functions
New contributor
Lion is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
1
What distinction are you making between "small program" and "function"?
â JdeBP
4 hours ago
What practical difference do you see this making?
â Jeff Schaller
3 hours ago
add a comment |Â
up vote
4
down vote
favorite
up vote
4
down vote
favorite
I would like to know whether the commands that we call in the shell are functions or programs?
shell command-line function bash-functions
New contributor
Lion is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
I would like to know whether the commands that we call in the shell are functions or programs?
shell command-line function bash-functions
shell command-line function bash-functions
New contributor
Lion is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
New contributor
Lion is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
edited 14 mins ago
RonJohn
485213
485213
New contributor
Lion is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
asked 5 hours ago
Lion
271
271
New contributor
Lion is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
New contributor
Lion is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
Lion is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
1
What distinction are you making between "small program" and "function"?
â JdeBP
4 hours ago
What practical difference do you see this making?
â Jeff Schaller
3 hours ago
add a comment |Â
1
What distinction are you making between "small program" and "function"?
â JdeBP
4 hours ago
What practical difference do you see this making?
â Jeff Schaller
3 hours ago
1
1
What distinction are you making between "small program" and "function"?
â JdeBP
4 hours ago
What distinction are you making between "small program" and "function"?
â JdeBP
4 hours ago
What practical difference do you see this making?
â Jeff Schaller
3 hours ago
What practical difference do you see this making?
â Jeff Schaller
3 hours ago
add a comment |Â
3 Answers
3
active
oldest
votes
up vote
7
down vote
It depends.
Commands can fall into multiple categories: builtins, aliases,
functions, executables (scripts and binaries in the search path).
On the command line, these occupy a single, flat namespace which
makes overriding possible. There are numerous ways of telling
kinds of programs apart:
$ f () :;
$ alias a=cat
$ which f
f ()
:
We know that f is a function.
$ which a
alias a='cat'
/usr/bin/cat
We know that a is an alias.
$ which yes
/usr/bin/yes
We know that yes is a program.
$ builtin echo ; echo $?
0
The shell has an echo builtin â¦
$ builtin cat ; echo $?
bash: builtin: cat: not a shell builtin
1
⦠but none for cat. If there is a builtin or an alias
but you insist on calling the program instead, prefix the
command with a backslash:
$ builtin true | printf "%dn" $?
0
$ alias true=false
$ true ; printf "%dn" $?
1
$ true ; printf "%dn" $?
0
Also, a command that's a program in one implementation of *nix might well become a shell builtin (= function) in another.
â jamesqf
1 hour ago
add a comment |Â
up vote
5
down vote
The definition of a function are returning single values, and does not output anything. Shell functions in particular may very well and could have an output or other side effects, since the return value of functions is so limited.
A command is an instruction given by a user to tell a computer to do something, for example, executing a single program or a group of linked programs.
A program is a sequence of instructions (i.e. commands) that re given to a computer and understandable by the computer's central processing unit (CPU). these instructions indicates which operations the computer should perform on a set of data.
Having said that, functions are a logical subset of the program. Calling one is entirely within your process. The command is a program (or a shell built-in) can be executed from the command shell. The command implements functions which perform a task. The opposite is not correct.
4
"a function returns a single value, and does not output anything" -- well, yeah, in the mathematical sense maybe. But in imperative programming languages, it's really common for "function" to mean just a subroutine, one that could do anything. And shell functions in particular may very well have output or other side effects, since the return value of functions is so limited.
â ilkkachu
4 hours ago
@ilkkachu. Thank you. I have updated the answer. Please feel free to revise ;-)
â Goro
4 hours ago
add a comment |Â
up vote
0
down vote
I would like to know whether the commands that we call in the shell are functions or programs?
Yes.
Specifically, when you type in some text and press enter, the shell must determine whether it's:
- an
alias, - a function,
- a built-in command,
- an executable file (and then whether or not it's a binary program or a script).
add a comment |Â
3 Answers
3
active
oldest
votes
3 Answers
3
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
7
down vote
It depends.
Commands can fall into multiple categories: builtins, aliases,
functions, executables (scripts and binaries in the search path).
On the command line, these occupy a single, flat namespace which
makes overriding possible. There are numerous ways of telling
kinds of programs apart:
$ f () :;
$ alias a=cat
$ which f
f ()
:
We know that f is a function.
$ which a
alias a='cat'
/usr/bin/cat
We know that a is an alias.
$ which yes
/usr/bin/yes
We know that yes is a program.
$ builtin echo ; echo $?
0
The shell has an echo builtin â¦
$ builtin cat ; echo $?
bash: builtin: cat: not a shell builtin
1
⦠but none for cat. If there is a builtin or an alias
but you insist on calling the program instead, prefix the
command with a backslash:
$ builtin true | printf "%dn" $?
0
$ alias true=false
$ true ; printf "%dn" $?
1
$ true ; printf "%dn" $?
0
Also, a command that's a program in one implementation of *nix might well become a shell builtin (= function) in another.
â jamesqf
1 hour ago
add a comment |Â
up vote
7
down vote
It depends.
Commands can fall into multiple categories: builtins, aliases,
functions, executables (scripts and binaries in the search path).
On the command line, these occupy a single, flat namespace which
makes overriding possible. There are numerous ways of telling
kinds of programs apart:
$ f () :;
$ alias a=cat
$ which f
f ()
:
We know that f is a function.
$ which a
alias a='cat'
/usr/bin/cat
We know that a is an alias.
$ which yes
/usr/bin/yes
We know that yes is a program.
$ builtin echo ; echo $?
0
The shell has an echo builtin â¦
$ builtin cat ; echo $?
bash: builtin: cat: not a shell builtin
1
⦠but none for cat. If there is a builtin or an alias
but you insist on calling the program instead, prefix the
command with a backslash:
$ builtin true | printf "%dn" $?
0
$ alias true=false
$ true ; printf "%dn" $?
1
$ true ; printf "%dn" $?
0
Also, a command that's a program in one implementation of *nix might well become a shell builtin (= function) in another.
â jamesqf
1 hour ago
add a comment |Â
up vote
7
down vote
up vote
7
down vote
It depends.
Commands can fall into multiple categories: builtins, aliases,
functions, executables (scripts and binaries in the search path).
On the command line, these occupy a single, flat namespace which
makes overriding possible. There are numerous ways of telling
kinds of programs apart:
$ f () :;
$ alias a=cat
$ which f
f ()
:
We know that f is a function.
$ which a
alias a='cat'
/usr/bin/cat
We know that a is an alias.
$ which yes
/usr/bin/yes
We know that yes is a program.
$ builtin echo ; echo $?
0
The shell has an echo builtin â¦
$ builtin cat ; echo $?
bash: builtin: cat: not a shell builtin
1
⦠but none for cat. If there is a builtin or an alias
but you insist on calling the program instead, prefix the
command with a backslash:
$ builtin true | printf "%dn" $?
0
$ alias true=false
$ true ; printf "%dn" $?
1
$ true ; printf "%dn" $?
0
It depends.
Commands can fall into multiple categories: builtins, aliases,
functions, executables (scripts and binaries in the search path).
On the command line, these occupy a single, flat namespace which
makes overriding possible. There are numerous ways of telling
kinds of programs apart:
$ f () :;
$ alias a=cat
$ which f
f ()
:
We know that f is a function.
$ which a
alias a='cat'
/usr/bin/cat
We know that a is an alias.
$ which yes
/usr/bin/yes
We know that yes is a program.
$ builtin echo ; echo $?
0
The shell has an echo builtin â¦
$ builtin cat ; echo $?
bash: builtin: cat: not a shell builtin
1
⦠but none for cat. If there is a builtin or an alias
but you insist on calling the program instead, prefix the
command with a backslash:
$ builtin true | printf "%dn" $?
0
$ alias true=false
$ true ; printf "%dn" $?
1
$ true ; printf "%dn" $?
0
answered 5 hours ago
phg
537415
537415
Also, a command that's a program in one implementation of *nix might well become a shell builtin (= function) in another.
â jamesqf
1 hour ago
add a comment |Â
Also, a command that's a program in one implementation of *nix might well become a shell builtin (= function) in another.
â jamesqf
1 hour ago
Also, a command that's a program in one implementation of *nix might well become a shell builtin (= function) in another.
â jamesqf
1 hour ago
Also, a command that's a program in one implementation of *nix might well become a shell builtin (= function) in another.
â jamesqf
1 hour ago
add a comment |Â
up vote
5
down vote
The definition of a function are returning single values, and does not output anything. Shell functions in particular may very well and could have an output or other side effects, since the return value of functions is so limited.
A command is an instruction given by a user to tell a computer to do something, for example, executing a single program or a group of linked programs.
A program is a sequence of instructions (i.e. commands) that re given to a computer and understandable by the computer's central processing unit (CPU). these instructions indicates which operations the computer should perform on a set of data.
Having said that, functions are a logical subset of the program. Calling one is entirely within your process. The command is a program (or a shell built-in) can be executed from the command shell. The command implements functions which perform a task. The opposite is not correct.
4
"a function returns a single value, and does not output anything" -- well, yeah, in the mathematical sense maybe. But in imperative programming languages, it's really common for "function" to mean just a subroutine, one that could do anything. And shell functions in particular may very well have output or other side effects, since the return value of functions is so limited.
â ilkkachu
4 hours ago
@ilkkachu. Thank you. I have updated the answer. Please feel free to revise ;-)
â Goro
4 hours ago
add a comment |Â
up vote
5
down vote
The definition of a function are returning single values, and does not output anything. Shell functions in particular may very well and could have an output or other side effects, since the return value of functions is so limited.
A command is an instruction given by a user to tell a computer to do something, for example, executing a single program or a group of linked programs.
A program is a sequence of instructions (i.e. commands) that re given to a computer and understandable by the computer's central processing unit (CPU). these instructions indicates which operations the computer should perform on a set of data.
Having said that, functions are a logical subset of the program. Calling one is entirely within your process. The command is a program (or a shell built-in) can be executed from the command shell. The command implements functions which perform a task. The opposite is not correct.
4
"a function returns a single value, and does not output anything" -- well, yeah, in the mathematical sense maybe. But in imperative programming languages, it's really common for "function" to mean just a subroutine, one that could do anything. And shell functions in particular may very well have output or other side effects, since the return value of functions is so limited.
â ilkkachu
4 hours ago
@ilkkachu. Thank you. I have updated the answer. Please feel free to revise ;-)
â Goro
4 hours ago
add a comment |Â
up vote
5
down vote
up vote
5
down vote
The definition of a function are returning single values, and does not output anything. Shell functions in particular may very well and could have an output or other side effects, since the return value of functions is so limited.
A command is an instruction given by a user to tell a computer to do something, for example, executing a single program or a group of linked programs.
A program is a sequence of instructions (i.e. commands) that re given to a computer and understandable by the computer's central processing unit (CPU). these instructions indicates which operations the computer should perform on a set of data.
Having said that, functions are a logical subset of the program. Calling one is entirely within your process. The command is a program (or a shell built-in) can be executed from the command shell. The command implements functions which perform a task. The opposite is not correct.
The definition of a function are returning single values, and does not output anything. Shell functions in particular may very well and could have an output or other side effects, since the return value of functions is so limited.
A command is an instruction given by a user to tell a computer to do something, for example, executing a single program or a group of linked programs.
A program is a sequence of instructions (i.e. commands) that re given to a computer and understandable by the computer's central processing unit (CPU). these instructions indicates which operations the computer should perform on a set of data.
Having said that, functions are a logical subset of the program. Calling one is entirely within your process. The command is a program (or a shell built-in) can be executed from the command shell. The command implements functions which perform a task. The opposite is not correct.
edited 4 hours ago
answered 5 hours ago
Goro
1,65441644
1,65441644
4
"a function returns a single value, and does not output anything" -- well, yeah, in the mathematical sense maybe. But in imperative programming languages, it's really common for "function" to mean just a subroutine, one that could do anything. And shell functions in particular may very well have output or other side effects, since the return value of functions is so limited.
â ilkkachu
4 hours ago
@ilkkachu. Thank you. I have updated the answer. Please feel free to revise ;-)
â Goro
4 hours ago
add a comment |Â
4
"a function returns a single value, and does not output anything" -- well, yeah, in the mathematical sense maybe. But in imperative programming languages, it's really common for "function" to mean just a subroutine, one that could do anything. And shell functions in particular may very well have output or other side effects, since the return value of functions is so limited.
â ilkkachu
4 hours ago
@ilkkachu. Thank you. I have updated the answer. Please feel free to revise ;-)
â Goro
4 hours ago
4
4
"a function returns a single value, and does not output anything" -- well, yeah, in the mathematical sense maybe. But in imperative programming languages, it's really common for "function" to mean just a subroutine, one that could do anything. And shell functions in particular may very well have output or other side effects, since the return value of functions is so limited.
â ilkkachu
4 hours ago
"a function returns a single value, and does not output anything" -- well, yeah, in the mathematical sense maybe. But in imperative programming languages, it's really common for "function" to mean just a subroutine, one that could do anything. And shell functions in particular may very well have output or other side effects, since the return value of functions is so limited.
â ilkkachu
4 hours ago
@ilkkachu. Thank you. I have updated the answer. Please feel free to revise ;-)
â Goro
4 hours ago
@ilkkachu. Thank you. I have updated the answer. Please feel free to revise ;-)
â Goro
4 hours ago
add a comment |Â
up vote
0
down vote
I would like to know whether the commands that we call in the shell are functions or programs?
Yes.
Specifically, when you type in some text and press enter, the shell must determine whether it's:
- an
alias, - a function,
- a built-in command,
- an executable file (and then whether or not it's a binary program or a script).
add a comment |Â
up vote
0
down vote
I would like to know whether the commands that we call in the shell are functions or programs?
Yes.
Specifically, when you type in some text and press enter, the shell must determine whether it's:
- an
alias, - a function,
- a built-in command,
- an executable file (and then whether or not it's a binary program or a script).
add a comment |Â
up vote
0
down vote
up vote
0
down vote
I would like to know whether the commands that we call in the shell are functions or programs?
Yes.
Specifically, when you type in some text and press enter, the shell must determine whether it's:
- an
alias, - a function,
- a built-in command,
- an executable file (and then whether or not it's a binary program or a script).
I would like to know whether the commands that we call in the shell are functions or programs?
Yes.
Specifically, when you type in some text and press enter, the shell must determine whether it's:
- an
alias, - a function,
- a built-in command,
- an executable file (and then whether or not it's a binary program or a script).
answered 5 mins ago
RonJohn
485213
485213
add a comment |Â
add a comment |Â
Lion is a new contributor. Be nice, and check out our Code of Conduct.
Lion is a new contributor. Be nice, and check out our Code of Conduct.
Lion is a new contributor. Be nice, and check out our Code of Conduct.
Lion is a new contributor. Be nice, and check out our Code of Conduct.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f468764%2fwhat-is-the-difference-between-the-terms-program-command-and-function-in%23new-answer', 'question_page');
);
Post as a guest
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password

1
What distinction are you making between "small program" and "function"?
â JdeBP
4 hours ago
What practical difference do you see this making?
â Jeff Schaller
3 hours ago