내 컴퓨터에서 내 계정에 로그인 할 때 누군가 .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
데몬을 만드십시오 . 스크립트의 모든 측면을 완벽하게 제어 할 수 있습니다. 한 번만 실행하거나 데몬으로 활성 상태를 유지할 수 있습니다. 대부분의 경우이 방법이 사용됩니다.
- 여기에있는 Apple Dev 문서
.plist
의 지침에 따라 파일을 작성 하십시오 . - 에 배치
~/Library/LaunchAgents
- 로그인 (또는을 통해 수동으로 실행
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이 유일한 옵션이라고 생각하며 이것이 그 이유 일 수 있습니다.
답변
-
login.sh
$ HOME 폴더에서 와 같이 쉘 스크립트를 작성하십시오 . -
다음 한 줄 스크립트를 스크립트 편집기에 붙여 넣습니다.
쉘 스크립트 “$ HOME / login.sh”수행
-
그런 다음 응용 프로그램으로 저장하십시오.
-
마지막으로 로그인 항목에 응용 프로그램을 추가하십시오.
스크립트 출력을 시각적으로 표시하려면 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