Как сохранить изменения в системном ENV из Ruby (NOT COMMAND SHELL)? - PullRequest
0 голосов
/ 30 марта 2011

Я пишу небольшой скрипт на Ruby (в Windows XP), который должен проверить ENV для нескольких вещей (особенно, если несколько вещей установлены, и если они есть, если для них установлены правильные значения. Если нет, и еслиих нет, его нужно изменить и ENV или перезаписать значение. Например, если ENV ["CUSTOM_PATH"] не содержит C: \ some_program \ bin или его не существует, его необходимо добавить и / или изменить и ENVсохранено.

Просто чтобы уточнить - я хочу, чтобы изменение было постоянным и имело общесистемный эффект, а не только текущую сессию. В основном я пытаюсь создать ярлык для перехода в Мой компьютер -> Свойства -> Дополнительно -> Системные переменные -> Изменение нескольких из них вручную -> сохранить. Мне нужно делать это 5-6 раз в день, пока я работаю, и это довольно быстро раздражает: -)

У меня все получилось, кроме последней части - я не могу понять, как сохранить ENV БЕЗ обращения к командам оболочки.

Есть ли способ сделать это напрямую из ruby, а не из shell?

Спасибо!

ВОЗМОЖНОЕ РЕШЕНИЕ:

Как указано в принятом ответе - это невозможно сделать.Однако моя работа зависит от комбинации ruby ​​и утилиты командной строки под названием SETENV.EXE , разработанной Винсентом Фатикой.Ему уже более десяти лет, но он отлично работает в Windows XP (пока не тестировал под Windows 7).Работает лучше, чем утилита setx, доступная от ms IMHO.Чтобы удалить вещи.

Вот краткий пример использования метода:

def switch_ruby_env
  if RUBY_VERSION.match("1.8.7").nil?  
    `setenv -m CUSTOM_PATH " "`
  else
    `setenv -m CUSTOM_PATH -delete`
  end
end 

Ответы [ 2 ]

1 голос
/ 11 декабря 2013

Вот что я бы сделал.

Вызовите env_vals = batchfile_that_echos_ENV_values.bat

Затем прочитайте эти значения env, и если они не верны, batchfile_to_modify_env --key=value

1 голос
/ 30 марта 2011

К сожалению, у вас не может быть процесса, напрямую сохраняющего настройки среды, однако вы можете проверить это:

Сохранение переменной среды через Ruby

Чтобы узнать, как воспользоваться сохранением значений в реестре и сделать их в конечном итоге доступными для переменных среды.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...