「open」コマンドがホームディレクトリで実行されるのはなぜですか?

「open」コマンドがホームディレクトリで実行されるのはなぜですか?

Mac OSX(Mountain Lion)にはシェルスクリプト「a」があります。

#!/bin/bash
open -a Terminal b

端末を使用して別のシェルスクリプト「b」を実行します。

echo `pwd`

興味深いことに、実行スクリプトがどこにあっても、pwd「b」のコマンドは常にホームディレクトリを返します。

質問:

  1. なぜこれが起こるのですか?
  2. 実行環境をホームディレクトリの代わりに作業ディレクトリに設定する方法(たとえば、到着時に作業ディレクトリに戻るpwd

答え1

open -a Terminal bbFinderで端末を開くのと同じです。 LaunchServicesに端末で開くように指示し、b現在の環境に関する情報を渡しません。

cd "$(dirname "$0")"スクリプトディレクトリにCDを移動できます。

新しい端末ウィンドウでスクリプトを実行するには、AppleScriptを使用できます。

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

関連情報