Разница между написанием `function Name {…; } `,` Name () {…; } `и` function Name () {…; } `в bash

Вы можете написать функции bash несколькими способами:

function JoinStrings { ...; } 


 function JoinStrings () { ...; } 


 JoinStrings () { ...; } 

Есть ли разница между этими функциями? Почему существуют 3 разных способа записи функции в bash? (Есть ли еще способы записи функции?)

man bash говорит:

 Shell Function Definitions A shell function is an object that is called like a simple command and exe‐ cutes a compound command with a new set of positional parameters. Shell functions are declared as follows: name () compound-command [redirection] function name [()] compound-command [redirection] This defines a function named name. The reserved word function is optional. If the function reserved word is supplied, the parentheses are optional. The body of the function is the compound command com‐ pound-command (see Compound Commands above). That command is usually a list of commands between { and }, but may be any command listed under Compound Commands above. compound-command is executed whenever name is specified as the name of a simple command. When in posix mode, name may not be the name of one of the POSIX special builtins. Any redirections (see REDIRECTION below) specified when a function is defined are performed when the function is executed. The exit status of a function definition is zero unless a syntax error occurs or a readonly function with the same name already exists. When executed, the exit status of a function is the exit status of the last command executed in the body. (See FUNCTIONS below.) 

Короче говоря, нет никакой разницы.