为在Swift程序中启动的命令设置终端环境

时间:2018-12-08 11:19:37

标签: swift macos command locale cat

我举两个例子。

  • 在终端中执行时:

    $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”命令使用启动程序的用户的环境。

0 个答案:

没有答案