在当前目录中打开新终端

问题描述 投票:0回答:2

在 MacOS Mojave 上使用 bash,我想在当前目录下打开一个终端并执行一条命令:

#!/bin/bash

osascript -e 'tell application "Terminal"' -e 'do script "./something_to_run"' -e 'end tell'

上面的代码打开了一个新的终端窗口,但它是在根目录而不是上面执行脚本的目录中打开的。我想我应该以某种方式使用

pwd
,但我不确定如何使用。

我该如何解决这个问题?

bash macos-mojave
2个回答
0
投票
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 中找到了这些命令。第一个命令在您现有的终端窗口中打开一个选项卡,第二个命令说在该选项卡中执行脚本。


0
投票

我对问题的理解如下:

你有一个 shell 脚本,你想在 Finder 中双击打开它,然后应该在 shell 脚本所在的目录中打开一个终端。在我的例子中,上面的代码只在主目录中打开一个终端。

但是,传递给shell脚本的参数

$0
包含执行的命令,其中包括当前目录。使用
$dirname ($0)
给出目录。

所以我通过以下命令找到了解决方案:

open -a "Terminal" "$(dirname "$0")" 

希望这有帮助

© www.soinside.com 2019 - 2024. All rights reserved.