Существует две полностью отдельных вещи на работе здесь. Сценарии оболочки являются исполняемыми файлами, которые можно выполнить непосредственно, поэтому при создании файла /usr/bin/foo
(Вы не должны вручную помещать материал там, но так или иначе), Вы сможете работать foo
и это выполнило бы это:
$ cat /usr/bin/foo
#!/bin/bash
echo One
$ foo
One
Функции являются также исполняемым файлом по имени, но они должны быть определены сначала, который происходит, когда Вы вводите их непосредственно в оболочку или получаете файл, который содержит их с source
или .
команды:
$ function bar() {echo Two;}
$ bar
Two
$ cat functions.sh
function baz() {echo Three;}
$ baz
command not found: baz
$ . functions.sh
$ baz
Three
Определение функций в файлах, которые находятся на Вашем пути, ничего не сделает; все еще необходимо получить те файлы в сценарии входа в систему. Если Вы хотите сделать отдельные сценарии, Вы могли бы также просто назвать их тем же как их функции и избавиться от функции полностью, таким образом, можно просто позвать сценарий по имени
Команда mail -s "hello kid" mymail@gmail.com
ожидает Вас, чтобы ввести сообщение электронной почты и затем управлять-d. После того, как Вы сделаете это, сообщение будет отправлено. Если Вы просто хотите быстрый тест, сделайте:
echo `date` this is a test | mail mymail@gmail.com
и сообщение будет сразу отправлено.
Можно также перенаправить файл к почте.
Полезный при отправке почты через cron
mail -s "Logs" mymail@gmail.com < /var/log/auth.log
вам необходимо настроить двухфакторную аутентификацию в настройках безопасности в учетной записи Google и получить 16-значный пароль приложения. Создайте файл mailrc
nano ~/.mailrc
и вставьте
account gmail {
set smtp-use-starttls
set ssl-verify=ignore
set smtp-auth=login
set smtp=smtp://smtp.gmail.com:587
set from="email@address(Name)"
set smtp-auth-user=email@address
set smtp-auth-password=16 digit app password
set ssl-verify=ignore
}
затем отправьте вам сообщение
echo -e "Message body" | mailx -s "Subject" receiver@email