Чтобы определить среду процесса в командной строке, вам нужно упорядочить свои определения перед командой:
varname=$varname bash < $varname test1.sh
Также кажется Мне кажется маловероятным, что вы действительно хотите открыть файл с именем ...
varname=${expansion_of_varname}
, хотя, похоже, это именно то, что вы пытаетесь сделать. Я ожидаю, что это тоже вызовет проблемы. Если вы хотите, чтобы каждое присвоение переменной влияло на окружение всех дочерних элементов оболочки, вы можете сделать:
set -a
... сначала. (хотя даже тогда x =; <$ {x: = file} sh -c 'echo "$ x"'
по-прежнему не работает без промежуточной точки с запятой) .
Установите сервер VNC, например, tigervnc. Запустите его как root, пробросьте порт (это не проброс X11, так что вы сможете это сделать, если они не запретят его отдельно ), затем подключитесь к нему. Вы должны увидеть экран входа в систему. Войдите в систему. Затем запуск DISPLAY=:0.0./my-application
должен работать нормально, так как в этот момент это точно так же, как если бы вы вошли в систему локально.
В качестве альтернативы, если у вас нет root, вы можете использовать другой сервер VNC, например vnc4server, который создает новый DISPLAY вместо подключения к существующему. Затем просто используйте любой номер, который он вам дает для вашей программы.