Задать среду терминала для команды, запускаемой в программе Swift - PullRequest
0 голосов
/ 08 декабря 2018

Я привожу пример двух разных поведений.

  • Когда я выполняю в терминале:

    $cat -v /private/tmp/input.txt > /private/tmp/output.txt
    

    У меня есть такой результат:

    $file -I /private/tmp/output.txt
    
    /private/tmp/output.txt: text/plain; charset=iso-8859-1
    

    Результат iso-8859-1 отлично подходит для меня.

  • И когда я запускаю эту программу Swift:

    func exec(_ path: String, _ args: String...) -> Int32 {
    let task = Process()
    task.launchPath = path
    task.arguments = args
    task.launch()
    task.waitUntilExit()
    return task.terminationStatus
    }
    exec("/bin/sh", "-c", "cat -v /tmp/input.txt > /tmp/output.txt")
    

    У меня есть такой результат:

    $file -I /private/tmp/output.txt
    /private/tmp/output.txt: text/plain; charset=us-ascii
    

    us-ascii здесь не то, что я хочу.


Я хотел бы, чтобы в моей программе был файл результатов iso-8849-1 (для моегопример конечно).Я нашел, как изменить результат в Терминале.Я получаю «us-ascii», если снял флажок «Задать переменные среды для локали при запуске» в настройках терминала.Поэтому я думаю, что моя программа не использует эти переменные.Я не прав?

Если нет, то я хотел бы знать следующее: как установить переменные среды пользователя в моей программе?

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

...