[Bash] 在登錄時運行腳本mac


Answers

tl; dr:使用OSX的本機進程啟動器和管理器, launchd

為此,請創建一個launchctl守護進程。 您將完全控制腳本的各個方面。 您可以運行一次或作為守護進程保持活動狀態。 在大多數情況下,這是要走的路。

  1. 根據下面的Apple Dev文檔中說明創建.plist文件。
  2. 放置在~/Library/LaunchAgents
  3. 登錄(或通過launchctl load [filename.plist]手動運行)

有關launchd更多信息, 維基百科的文章相當不錯,它描述了系統及其優於其他舊系統的優勢。

以下是在登錄時運行腳本的特定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>

將Program鍵後面的內容替換為您所需的命令。

另存為~/Library/LaunchAgents/com.user.loginscript.plist

運行launchctl load ~/Library/LaunchAgents/com.user.loginscript.plist並註銷/進行測試(或直接測試,運行launchctl start com.user.loginscript

尾巴/var/log/system.log錯誤消息。

關鍵是這是一個用戶特定的launchd條目,因此它將在給定用戶的登錄時運行。 系統特定的啟動守護進程(放置在/Library/LaunchDaemons )在啟動時運行。

如果您希望腳本在所有用戶的登錄時運行,我相信LoginHook是您唯一的選擇,這可能是它存在的原因。

Question

我想知道是否有人能夠幫助我在登錄我的計算機帳戶時運行.sh文件來運行。 我正在運行Mac OS X 10.6.7。

我有一個文件“Example.sh”,當我登錄到我的電腦時,我想運行該文件。 當我已經登錄時,我沒有運行它的問題,但我希望它自動運行。

人們說要將它添加到登錄shell文件中,但我不知道它在哪裡。 請幫助一些。