Swift,macOS:打开该位置的终端窗口

Swift,macOS:打开该位置的终端窗口,swift,macos,shell,terminal,Swift,Macos,Shell,Terminal,我正在尝试在终端窗口中使用午餐并转到其中的某个本地路径: 我的代码: public class func openShell(at url: URL?) { guard let url = url else { return } let shellProcess = Process(); shellProcess.launchPath = url.path; //shellProcess.arguments = [ // "osa

我正在尝试在终端窗口中使用午餐并转到其中的某个本地路径:

我的代码:

public class func openShell(at url: URL?) {
    guard let url = url else { return }
    
    let shellProcess = Process();

    shellProcess.launchPath = url.path;

    //shellProcess.arguments = [
    //  "osascript -e 'tell application \"terminal\" to do script \"cd \(url)\"'"
    //];

    shellProcess.launch();
}
但结果是,XCode内部的调试控制台中有一些输出,但并没有打开shell窗口


注释代码-我尝试过的另一种方法

,因此这里基本上有两种选择:

  • 您需要关闭沙箱来使用此方法
  • 您需要创建XPC服务,然后从那里调用这些东西,它应该可以工作
  • 第二种方法显然更好,在实际应用中,您应该使用这种方法。也了解更多有关XPC服务的信息您可以查看我的回购协议,我也可以在这里查看和

    2021,Swift 5.0 答案很简单:

    @available(OSX 10.15, *)
    public class func openTerminal(at url: URL?){
        guard let url = url,
              let appUrl = NSWorkspace.shared.urlForApplication(withBundleIdentifier: "com.apple.Terminal")
        else { return }
        
        NSWorkspace.shared.openFile("\(url.path)", withApplication: appUrl.path)
    }
    
    在每次func调用中,将打开具有选定位置的终端的新实例


    而且无需为此创建XPC服务或关闭沙箱。

    无需禁用sanbox。我找到了解决办法