# echo "This is message body" | mail -s "This is subject" you@domain.com
Или
# mail -s "My Subject" you@yourdomain.com < msg.txt
Это определение POSIX из .dot
:
Оболочка должна выполнять команды из файла в текущей среде .
Если файл не содержит
/
, оболочка должна использовать поисковый путь, указанный в$ PATH
, чтобы найти каталог, содержащий файл. Однако, в отличие от обычного поиска команд , файл, который ищет утилита.dot
, должен быть , а не исполняемым. Если файл, доступный для чтения, не найден, неинтерактивная оболочка будет прервана; интерактивная оболочка должна написать диагностическое сообщение для стандартной ошибки, но это условие не должно считаться синтаксической ошибкой.
Учитывая вышесказанное, вы можете просто заменить свой [-f ./file] && source ./file
на . ./file
вместе. Если файла нет, худшее, что может случиться, - это вы получите уведомление при входе в систему - я думаю, что, вероятно, вам нужна информация.
Конечно, если вы предпочитаете продолжить тест, вы можете сделать:
test -f ./file && . $_
В bash
, .
и источник
являются синонимами. Заглянув в исходный код bash
, файл builtin / source.def
, вы увидите .
и источник
используют одну и ту же внутреннюю функцию source_builtin
:
$BUILTIN source
$FUNCTION source_builtin
$SHORT_DOC source filename [arguments]
Execute commands from a file in the current shell.
Read and execute commands from FILENAME in the current shell. The
entries in $PATH are used to find the directory containing FILENAME.
If any ARGUMENTS are supplied, they become the positional parameters
when FILENAME is executed.
Exit Status:
Returns the status of the last command executed in FILENAME; fails if
FILENAME cannot be read.
$END
$BUILTIN .
$DOCNAME dot
$FUNCTION source_builtin
$SHORT_DOC . filename [arguments]
Execute commands from a file in the current shell.
Но источник
не совместим с POSIX, поэтому, если ваш сценарий вызывается с POSIX / bin / sh
, вы должны использовать .
вместо источника
. Поскольку POSIX не ограничивает оболочку, все указанные выше сценарии будут работать.
Лично я всегда использую .
вместо источника
. (Многие сценарии, которые я написал, работают под cron
).