2013-03-13 3 views
0

Как обновить переменную окружения PATH с помощью java. С тем же кодом я должен иметь возможность обновлять переменную PATH в Windows и Unix при запуске кода в соответствующей ОС.Обновить переменную среды PATH независимо от ОС с помощью JAVA

Заранее спасибо.

С уважением, Сан

+0

См. Этот вопрос http://stackoverflow.com/questions/318239/how-do-i-set-environment-variables-from-java –

ответ

0

В Unix (с языком), вы можете изменить путь, используя различные формы команды «ехес», но он может быть использован только для передачи дополнительных/обновленных переменных независимо будет выполненных текущей программой.

Одним из принципов Unix является то, что среда не изменяется от того, что было, когда вы начали выполнять свой код. Таким образом, даже если ваш код (java) выполняется через JVM, ему все равно придется соблюдать это правило. После выхода JVM все обновления PATH будут потеряны.

Это не относится к Windows. Программа может изменить текущую среду, поэтому вы часто оказываетесь в другом каталоге после выполнения какого-либо кода на платформе Windows.

К сожалению, из-за этого у вас не будет средств для этого в Windows и Unix. Лучшее, что вы можете надеяться в Unix, чтобы иметь что-то вроде этого:

myScript.sh:

# This is a script that executes the program and then 'includes' a script 
/path/to/my/program # which writes the following file containing environment changes 
. /this/file/created/by/above 

в 'оболочке' интерпретатора (командной строке, если вы предпочитаете):

# Execute my program using myScript.sh 
. ./myScript.sh 

Это должно сохранить ваше изменение пути, но вы никогда не сможете назвать «myScript.sh» без ведущей точки. Если вы забыли его, после выполнения вы можете включить «/ this/file/created/by/above».

Конечно, когда вы используете это, вам необходимо обрабатывать возможное одновременное выполнение несколькими пользователями. Таким образом, файл «/ this/file/created/by/above» должен быть разным для каждого исполнения. Исследуйте возможное использование параметра «$$».

Ps. «/ path/to/my/program» может быть JVM, который будет выполнять ваш Java-код.

Безопасность: Если бы я был «root» пользователем, я бы окончательно не захотел выполнить ваш код. Ваша программа могла бы поместить что-нибудь в этот файл «/ this/file/created/by/above», и он будет выполнен с помощью root.

Смежные вопросы