почему ключевое слово export не работает во втором сценарии?

Рассмотрим следующие команды:

export set value=7 echo $value export set value=70|echo $value 

Теперь результат, который мы получаем:

7

7

Однако во втором случае это не должно быть 70.

кто-то будет объяснять, что мне не хватает.

Каждая команда в конвейере выполняется в своей собственной оболочке, поэтому вы используете export set value=70 в подоболочке, которая не может изменять родительский элемент, поэтому echo $value не видит попытки изменить значение.

Кроме того, для set оболочек POSIX не требуется назначать переменную, вы можете просто сделать export value=70