Я использую Windows 10 с Pharo 6 и обнаружил, что невозможно использовать классы OSProcess
или OSSubprocess
(сложно установить или последние версии не поддерживаются для Windows).
Для меня работает LibC. Вы можете перенаправить stderr в файл, используя 2>
внутри команды:
errors := '/tmp/errors.txt'.
result := LibC uniqueInstance system:
'echo "Hello World" > /tmp/hello.txt 2>', errors.
result = 0 ifFalse: [ errors asFileReference ]
Можно манипулировать переменными среды, используя (хотя в Windows возвращается значение 1, означающее сбой):
OSEnvironment current setEnv: 'MY_ENVIRONMENT_VARIABLE' value: '1'.
Однако мне не удалось изменить текущий каталог:
OSEnvironment current changeDirectoryTo: myDirectory asFileReference. "--> doesNotUnderstand for Windows"
Обходной путь должен сделать CD внутри команды:
result := LibC uniqueInstance system:
'cd ', myDirectory, ' && ls > /tmp/output.txt 2>', errors.