在 MacOS Mojave 上使用 bash,我想在当前目录下打开一个终端并执行一条命令:
#!/bin/bash
osascript -e 'tell application "Terminal"' -e 'do script "./something_to_run"' -e 'end tell'
上面的代码打开了一个新的终端窗口,但它是在根目录而不是上面执行脚本的目录中打开的。我想我应该以某种方式使用
pwd
,但我不确定如何使用。
我该如何解决这个问题?
osascript -e 'tell application "System Events" to tell process "Terminal" to keystroke "t" using command down'
osascript -e 'tell app "Terminal" to do script "./script.sh" in window 1'
我从 GitHub Gist 中找到了这些命令。第一个命令在您现有的终端窗口中打开一个选项卡,第二个命令说在该选项卡中执行脚本。
我对问题的理解如下:
你有一个 shell 脚本,你想在 Finder 中双击打开它,然后应该在 shell 脚本所在的目录中打开一个终端。在我的例子中,上面的代码只在主目录中打开一个终端。
但是,传递给shell脚本的参数
$0
包含执行的命令,其中包括当前目录。使用 $dirname ($0)
给出目录。
所以我通过以下命令找到了解决方案:
open -a "Terminal" "$(dirname "$0")"
希望这有帮助