为什么“open”命令在主目录下运行?

为什么“open”命令在主目录下运行?

在 Mac OSX (Mountain Lion) 下,我有一个 shell 脚本“a”:

#!/bin/bash
open -a Terminal b

使用终端运行另一个 shell 脚本“b”:

echo `pwd`

有趣的是,无论我的运行脚本位于何处,pwd“b”中的命令始终返回主目录。

问题:

  1. 为什么会出现这种情况?
  2. 如何将运行环境设置为工作目录而不是主目录(即到达时返回工作目录pwd

答案1

open -a Terminal b就像b从 Finder 在终端中打开一样。它告诉 LaunchServices 在终端中打开b,并且不会传递有关当前环境的任何信息。

您可以使用cd "$(dirname "$0")"cd 到脚本的目录。

如果您想在新的终端窗口中运行脚本,可以使用 AppleScript:

osascript -e 'tell app "Terminal" to do script "cd " & quoted form of (system attribute "PWD") & "; ~/bin/b"'

相关内容