在 Mac OSX (Mountain Lion) 下,我有一个 shell 脚本“a”:
#!/bin/bash
open -a Terminal b
使用终端运行另一个 shell 脚本“b”:
echo `pwd`
有趣的是,无论我的运行脚本位于何处,pwd
“b”中的命令始终返回主目录。
问题:
- 为什么会出现这种情况?
- 如何将运行环境设置为工作目录而不是主目录(即到达时返回工作目录
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"'