Mac OSX(Mountain Lion)にはシェルスクリプト「a」があります。
#!/bin/bash
open -a Terminal b
端末を使用して別のシェルスクリプト「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"'