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

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

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

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



답변

이것을 따르십시오 :

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

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

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

편집하다:

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

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

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


답변

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이 유일한 옵션이라고 생각하며 이것이 그 이유 일 수 있습니다.


답변

  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


답변