set -a
. ./tmp.txt
set +a
set -aвикликає автоматичне експортування змінних¹, визначених відтепер. Він доступний у будь-якій оболонці Борна. .- це стандартне і назва Bourne для sourceкоманди, тому я вважаю за краще це для портативності ( sourceпоходить від cshі тепер доступний у більшості сучасних оболонок, подібних до Bourne, включаючи, bashхоча (іноді з дещо іншою поведінкою)).
У оболонках POSIX ви також можете використовувати set -o allexportяк більш описовий альтернативний спосіб його написання ( set +o allexportдля зняття з рахунку).
¹ bashВважайте, що це також призводить до того, що всі функції, оголошені під час роботи allexport, будуть експортовані в навколишнє середовище (оскільки BASH_FUNC_myfunction%%змінні середовища, які потім імпортуються усіма bashоболонками, виконуються в цьому середовищі, навіть коли вони працюють sh).