Сценарий будет выполнен в другой оболочке. А команда export A
устанавливает переменную только для текущей оболочки. Вы можете экспортировать переменную поверх вашего скрипта, это не повлияет на остальную часть вашей среды. Например
~$ export A=a
~$ echo $A
a
если создать в той же оболочке скрипт test.sh
#!/bin/bash
export A=b
echo $A
Вывод будет 'b', но значение A в оболочке останется неизменным
Во-первых, в ваших примерах
var=$(sleep 1 & ; echo foo)
не должен работать в bash
, потому что &
уже служит концом строки.
(-bash :подстановка команды :строка 1 :синтаксическая ошибка рядом с неожиданным токеном `;')
Попробуйте
var=$(sleep 1 & echo foo) # no ';' !!
(эхо $var :foo)
В моем понимании простой
xdg-open <something> & # optional: echo foo
должен помочь, будь то в оболочке sub -или снаружи.