#ruby #command-prompt
#ruby #командная строка
Вопрос:
Я выполняю команды на Ruby с помощью system command
, но я сталкиваюсь со следующей проблемой:
Я загружаю среду с помощью команды Environment.bat
, и я хочу выполнить вторую команду, которая использует среду, которую я успешно настроил в предыдущей команде. Однако кажется, что более ранняя загрузка среды вообще не оказывает никакого эффекта.
Как решить эту проблему, чтобы среда, которую я загружаю в оболочку ruby, использовалась в командах, которые я выполняю впоследствии.
Комментарии:
1. как выглядит «окружающая среда»? Это набор системных переменных или что-то в этом роде? Это действительно могло бы помочь, если бы вы показали какой-нибудь код
Ответ №1:
Возможно, вам потребуется «связать» две ваши команды так, чтобы они выполнялись в одной и той же системной подоболочке. То есть, если вы выполняете две команды в отдельных «системных» вызовах ruby, то они изменяют среды отдельных дочерних программ, которые не связаны напрямую.
system("env.bat") # Executes in child process 1.
system("program.exe") # Executes in child process 2.
В приведенном выше примере, «program.exe «не знал бы, изменил ли «env.bat» среду, добавив новую переменную среды (например), поскольку они выполняются в отдельных, не связанных процессах.
system("env.bat amp;amp; program.exe") # Both in the same child process.
Но в этом примере две команды выполняются в одном и том же процессе подоболочки, одна за другой, до тех пор, пока «env.bat» не завершится с кодом ошибки. В данном случае «program.exe » имел бы доступ к любым новым переменным среды, установленным «env.bat».