Форма:
sh -c '...' name arg1 arg2 ...
называется встроенным скриптом, часто встречается в сочетании с find ... -exec sh -c '...' find-sh {} +
. Внутри встроенного скрипта для $ 0
будет установлено значение name
, а остальные аргументы были заполнены как $ @
.
В общем, вы должны установить для него что-то значимое, потому что оно будет использоваться, например, для отображения сообщений об ошибках:
sh -c 'echo "${1?}"' foo
foo: 1: foo: 1: parameter not set
Но вы можете установить name
на любое слово, которое вам нравится, чтобы указать имя встроенный скрипт:
sh -c 'printf "%s\n" "$0"' custom-sh 1 2 3
custom-sh
Это поведение определяется POSIX .