Почему оболочка Борна считается устаревшей?

Публикую решение, которое сработало для меня, на случай, если оно поможет кому-то еще, извините, что так поздно.

Наиболее надежным способом, который я нашел для этого, было включение вложения как base64 в сам файл eml, ниже приведен пример содержимого eml.

Примечание 01 :base64 для файла получается при выполнении команды base64 в linux с использованием вложения в качестве аргумента (должен работать с любым инструментом base64)

Примечание 02 :строка, используемая для границы, является просто ерундой, используя дату и случайные прописные буквы

Имя файла :emlfile.eml

From: Sender <sender@email.co.za>
To: recipient01@email.co.za
CC: recipient02@email.co.za
Disposition-Notification-To: recipient01@email.co.za
Subject: Generic Subject
Mime-Version: 1.0
Content-Type: multipart/mixed; boundary="19032019ABCDE"

--19032019ABCDE
Content-Type: text/plain; charset="US-ASCII"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

Generic Body Copy

--19032019ABCDE
Content-Type: application;
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="MyPdfAttachment.pdf"

*base64 string goes here (no asterix)*

--19032019ABCDE--

Затем файл filename.eml можно отправить с помощью команды, и он будет содержать вложение

# /usr/sbin/sendmail -t < filename.eml
1
02.07.2020, 20:14
1 ответ

Маловероятно, что вы действительно используете оболочку Bourne, более вероятно, что вы используете dash (Оболочку Debian Almquist ). Вы можете проверить это, позвонив по номеру:

echo $0

Точное имя оболочки можно получить с помощью скрипта whatshellизhttps://www.in-ulm.de/~mascheck/various/whatshell/

Но dash не является оболочкой Bourne Shell и в отношении UNIX хуже, чем Bourne Shell, поскольку dash не поддерживает многобайтовые -символы .

Bourne Shell — это оболочка, которая была начата как переписанная оболочка Томпсона Стивеном Борном в 1976 году и с тех пор претерпела значительные изменения.

В 1983 году копия Bourne Shell использовалась в качестве стартовой для Korn Shell (ksh )Дэвида Корна .

В 1988 году и Bourne Shell, и ksh получили поддержку интернационализации, а libc из UNIX развивалась до 1992 года, так что с тех пор обе поддерживают многобайтовые -символы.

В 1989 году оболочка Korn использовалась как образец для Bash, оболочки проекта GNU.

В 1989 году оболочка Bourne Shell 1982 года использовалась в качестве образца для ясеня (оболочки Almquist ), а тире — это исправленная ошибка -версии ясеня. Но и ash, и dash позже добавили функции POSIX.

В 1992 г.POSIX использовал ksh88 в качестве образца для определений оболочки POSIX.

В 2005 г. компания OpenSolaris сделала исходный код оболочки Bourne Shell открытым, а начиная с 2006 г. исходный код оболочки Bourne Shell эволюционировал, чтобы стать совместимым с POSIX.

Хотя в dash отсутствует редактор истории и поддержка нескольких -байтов, текущая оболочка Bourne Shell реализует эти функции.

Основные различия между оболочками на сегодняшний день состоят, однако, в (помимо соответствия POSIX )функциям, которые делают оболочки удобными для использования в качестве интерактивных оболочек. Это то, что вы получаете от недавней Bourne Shell (bosh ), от ksh и от Bash, но не от dash.

2
18.03.2021, 23:22

Теги

Похожие вопросы