Исходная команда (".
") является встроенной в оболочку. Вы должны явно запустить /bin/ksh
, передав имя скрипта в качестве аргумента (за которым следуют любые аргументы скрипта).
У вас есть большая проблема, если вам нужно для создания сценария. Обычно это означает, что изменения среды происходят в контексте текущей оболочки, а не подоболочки.
Это не будет работать с Java, так как Java не является оболочкой. Вам нужно выяснить, как изменить среду с помощью Java.
Конечно, если я ошибаюсь и в этом сценарии есть нечто большее, чем просто установка DISPLAY, он может работать как предложено.
Метод, который вам нужно будет использовать, зависит от того, чего вы пытаетесь достичь (например, «Запускаете ли вы другие программы, использующие exec (), которые полагаются на установку DISPLAY?» Или «Нужна ли ваша Java-программа?»). DISPLAY будет установлен? ").
Если, как вы утверждаете в своем комментарии, только ваша Java-программа нуждается в установке DISPLAY, просто установите ее снаружи перед запуском вашей программы. Создайте cmd (или bash) файл, который устанавливает переменную DISPLAY , затем вызывает JRE для запуска вашей программы.
#/bin/ksh
export DISPLAY-:0.0
/usr/bin/jre/java your_program blah.blah.blah
Я бы также изменил ваш main()
, чтобы проверить, что он установлен на что-то, и корректно завершил работу, если нет:
if (System.getenv ("DISPLAY") == null)
// doesn't exist, exit gracefully.