로그인 Mac에서 스크립트 실행 [닫기]


280

내 컴퓨터에서 내 계정에 로그인 할 때 누군가 .sh 파일을 실행하도록 도와 줄 수 있는지 궁금합니다. Mac OS X 10.6.7을 실행하고 있습니다.

컴퓨터에 로그온 할 때 실행할 "Example.sh"파일이 있습니다. 이미 로그인했을 때 실행하는 데 문제가 없지만 자동으로 실행되기를 원합니다.

사람들은 그것을 로그인 쉘 파일에 추가하려고하지만 그것이 어디에 있는지 모르겠습니다. 도와주세요.


3
이것은 주제가 아닙니다 ... 나는 Emacs 데몬을 시작하기 위해 필요했습니다.) BTW 가장 좋은 대답은 Lingon X 앱 IMHO입니다.
HappyFace

1
나는 이것이 주제가 아닌지 상관하지 않습니다. 내가 인터넷에서 찾은 최고의 답변이며 존경받을 가치가 있습니다. 나는 처음으로 해결책을 찾는 사람들에게 그것을 무시했고 그것은 큰 실수였습니다!
Sethmr

답변:


379

이것을 따르십시오 :

  • 스타트 Automator.app
  • 고르다 Application
  • Show library툴바에서 클릭 (숨겨진 경우)
  • Run shell script(에서 Actions/Utilities) 추가
  • 스크립트를 창에 복사하여 붙여 넣기
  • 그것을 테스트
  • 어딘가에 저장하십시오 (예 : 당신은 Applications당신의 가정에 폴더를 만들 수 있습니다 , 당신은 얻을 것이다 your_name.app)

  • System Preferences-> Accounts-> 로 이동하십시오Login items

  • 이 앱을 추가
  • 테스트 및 완료;)

편집하다:

최근에이 답변에 대한 "좋은 답변"배지를 받았습니다. 내 솔루션은 간단하고 작동하는 동안, 가장 깨끗한 방법이 설명되어 로그인 할 때 어떤 프로그램이나 쉘 스크립트를 실행하는 trisweb의 대답 @를 , 당신이 상호 작용을하지 않으려면 .

자동화 솔루션을 사용하면 다음과 같은 작업을 수행 할 수 있습니다. 자동화 스크린 샷 로그인 응용 프로그램

따라서 스크립트 실행 또는 앱 종료, 비밀번호 요청, 로그인시 다른 자동화 워크 플로 실행, 로그인시 조건부로 애플리케이션 실행 등을 요청합니다.


2
@GregMiernicki LOL, good morning ...;) 거의 1 년 전에 내 답변에 EDIT을 추가했는데, 여기에서도 마찬가지입니다. 그러나 XML (plist) 파일을 만드는 것은 많은 사용자에게 친숙하지 않기 때문에 일반 사용자에게는 조금 더 간단합니다. 어쨌든-의견을 주셔서 감사합니다. ;)
jm666

4
@GregMiernicki와 Automator 솔루션을 사용하면 대화 형 로그인 스크립트를 만들 수 있습니다. 예를 들어 입력을 요청하는 스크립트 (예 : 추가 비밀번호 등) 세상은 흑백 일뿐 아니라 적어도 얼룩말과도 같습니다. :) :)
jm666

2
@Cupidvogel 로그인시 데몬을 실행하는 것은 시작된 솔루션의 작업입니다. trisweb의 답변을 참조하십시오. 파이썬 데몬을 관리 할 수 ​​있다면 재시작의 모든 측면을 관리 할 수있는 plist 설정 파일을 관리 할 수 ​​있습니다.
jm666

3
다른 답변을 가장 깨끗하게 지적하는 것에 대한 조언. 그것은 좋은 시민권 배지를 받아야합니다 :).
studgeek

2
놀라운 답변입니다. 시스템 시작시 "composer global update"와 같은 명령을 실행하려면 스크립트 시작 부분에서 PATH = / usr / local / bin : $ PATH를 내보내십시오.
Leonardo

377

tl; dr : OSX의 기본 프로세스 실행기 및 관리자를 사용하십시오 launchd.

그렇게하려면 launchctl데몬을 만드십시오 . 스크립트의 모든 측면을 완벽하게 제어 할 수 있습니다. 한 번만 실행하거나 데몬으로 활성 상태를 유지할 수 있습니다. 대부분의 경우이 방법이 사용됩니다.

  1. 여기에있는 Apple Dev 문서.plist지침에 따라 파일을 작성 하십시오 .
  2. 에 배치 ~/Library/LaunchAgents
  3. 로그인 (또는을 통해 수동으로 실행 launchctl load [filename.plist])

더에 들어 launchd, 위키 피 디아 기사는 꽤 좋은 시스템 및 기타 이전 시스템에 비해 장점을 설명합니다.


다음 은 login에 스크립트를 실행하기위한 특정 plist 파일 입니다.

OSX El Capitan 이상용 업데이트 2017/09/25 ( José Messias Jr의 신용 ) :

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
   <key>Label</key>
   <string>com.user.loginscript</string>
   <key>ProgramArguments</key>
   <array><string>/path/to/executable/script.sh</string></array>
   <key>RunAtLoad</key>
   <true/>
</dict>
</plist>

<string>프로그램 후 키를 원하는 명령으로 바꿉니다 (해당 명령에서 참조하는 모든 스크립트는 실행 가능해야합니다 chmod a+x /path/to/executable/script.sh. 모든 사용자가 사용할 수 있도록해야합니다).

다른 이름으로 저장 ~/Library/LaunchAgents/com.user.loginscript.plist

launchctl load ~/Library/LaunchAgents/com.user.loginscript.plist테스트 및 실행 을 위해 로그 아웃 / 로그인 (또는 직접 테스트 launchctl start com.user.loginscript)

/var/log/system.log오류 메시지의 꼬리 .

핵심은 이것이 사용자 별 실행 항목이므로 주어진 사용자의 로그인시 실행됩니다. 에 배치 된 시스템 별 시작 데몬 /Library/LaunchDaemons은 부팅시 실행됩니다.

모든 사용자가 로그인 할 때 스크립트를 실행하려면 LoginHook이 유일한 옵션이라고 생각하며 이것이 그 이유 일 수 있습니다.


4
예. FWIW 나는 같은 기술 도움에이 블로그를 발견 developernotes.com/archive/2011/04/06/169.aspx
다니엘 제임스에게

8
Automator 조치에 대해 의심스러운 사항과 왜 '권장되지 않는'이유는 언급하지 않습니다.
Mike Campbell

4
여기에 폴더 launchctl 대 작업에 대한 좋은 개요입니다 : apple.stackexchange.com/a/63731/38290 - 그리고 LoginHook의 제한의 또 다른 약이 (하나의 스크립트 허용) - superuser.com/a/377401을 . 실제로 모호하거나 좋지 않은 방법은 아니지만 launchctl대부분의 경우 훨씬 더 우수하며 스크립트 실행의 모든 ​​가능한 측면을보다 효과적으로 제어 할 수 있습니다. "시작할 때 성능이 떨어지는 방법을 사용하는 이유는 무엇입니까?" ( 이 상황에서 개인적으로 권장하지 않음 을 나타 내기 위해 첫 번째 문장을 변경했습니다 .)
trisweb

3
LaunchDaemon plist를 만드는 방법이 궁금 하십니까? 사용자가 로그인 할 때 마다 무엇이 실행 됩니까? . 따라서 시스템이 부팅 될 때가 아니라 사용자가 로그인 할 때 마다 (로그 아웃-로그인 주기로 시도하십시오). launchctl을 사용하여 위의 (잘못 된) 자동화 솔루션을 구현하는 방법을 정확히 (bla-bla뿐만 아니라) 보여줄 수 있습니까 ?
cajwine 2012 년

9
/ Library / LaunchAgents /의 Plist 파일은 로그인 할 때 로그인 한 사용자의 ID로 실행됩니다. / Library / LaunchDaemons /의 Plist 파일은 부팅시 루트로 실행됩니다 (ID는 User 키로 변경할 수 있음 ).
bain

42
  1. login.sh$ HOME 폴더에서 와 같이 쉘 스크립트를 작성하십시오 .

  2. 다음 한 줄 스크립트를 스크립트 편집기에 붙여 넣습니다.

    쉘 스크립트 "$ HOME / login.sh"수행

  3. 그런 다음 응용 프로그램으로 저장하십시오.

  4. 마지막으로 로그인 항목에 응용 프로그램을 추가하십시오.

스크립트 출력을 시각적으로 표시하려면 2 단계를 다음과 같이 바꾸십시오.

tell application "Terminal"
  activate
  do script "$HOME/login.sh"
end tell

여러 명령이 필요한 경우 다음과 같은 것을 사용할 수 있습니다.

tell application "Terminal"
  activate
  do script "cd $HOME"
  do script "./login.sh" in window 1
end tell

1
나는 이것을 명령 줄 설치 프로그램이 누락 된 유일한 것으로 연결했다.)
sorin

1
좋은 해결책. "로그인"창을 숨기려면 어떻게해야합니까? 로그인 항목을 체크하려고했습니다.
xgdgsc

1
@xgdgsc : Go to System Preferences -> Accounts -> Login items이 응용 프로그램의 Goto and check hide 상자.
anubhava

1
@anubhava 내가 말했듯이 이미이 로그인 응용 프로그램의 숨기기 상자를 확인했습니다. 그러나 여전히 컴퓨터가 종료 될 때 나타나고 종료해야합니다.
xgdgsc

2
@ xgdgsc : 아, ~/Library/LaunchAgents폴더 를 확인 했습니까?
anubhava
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.