OSX:如何以编程方式判断我是在终端还是在 iTerm 中 运行?

OSX: How can I programatically tell if I'm running in Terminal or iTerm?

我在 OSX 上有一个命令行应用程序 运行,它想使用 AppleScript 在当前 window 中创建多个选项卡。

如何判断我的程序是终端、iTerm 还是其他终端程序中的 运行?

osascript -e 'tell application "Finder" to get the name of every process whose visible is true'

这将是一个 运行 应用程序列表,假设你只有 运行 一个终端,iTerm,...,这将有效

用列表做你想做的事

希望对您有所帮助

$TERM_PROGRAM env var 设置为 iTerm.appApple_Terminal,因此如果将其作为参数传递给 osascript (假设 你的炮击到 osascript)

用法示例:

osascript ThisScriptName.scpt $TERM_PROGRAM

示例脚本:

--osascript ThisScriptName.scpt $TERM_PROGRAM
on run {TermType}
    if (TermType = "iTerm.app") then
        -- iTerm.app :-P
        tell application "iTerm"
            tell current window
                tell current session
                    set newSession to (split horizontally with default profile)
                end tell
            end tell
        end tell
    else if (TermType = "Apple_Terminal") then
        -- Terminal.app
        tell application "Terminal"
            do script "open 'https://iterm2.com/downloads.html'" in window 1
        end tell
    else
        -- Unknown terminal application
        return "Really? Not using iTerm.app or Terminal.app"
    end if
end run