"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"'

관련 정보