MZi*_*an6 255 bash shell terminal login osx-snow-leopard
我想知道是否有人能够帮助我在我的计算机上登录帐户时运行.sh文件.我正在运行Mac OS X 10.6.7.
我有一个文件"Example.sh",我想在我登录计算机时运行.我已登录时运行它没有问题,但我想让它自动运行.
人们说要将它添加到登录shell文件中,但我不知道它在哪里.请帮忙.
tri*_*web 357
tl; dr:使用OSX的本机进程启动器和管理器launchd.
为此,请制作一个launchctl守护进程.您将完全控制脚本的所有方面.您可以运行一次或保持活着作为守护进程.在大多数情况下,这是要走的路.
.plist根据Apple Dev文档中的说明创建文件,或在下面详细说明.~/Library/LaunchAgentslaunchctl load [filename.plist])有关更多信息launchd,维基百科文章非常好,并描述了系统及其优于其他旧系统的优势.
这是在登录时运行脚本的特定plist文件.
为OSX埃尔卡皮坦和更新(信贷更新2017年9月25日何塞弥赛亚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>
Run Code Online (Sandbox Code Playgroud)
<string>用您想要的命令替换Program key之后的.
另存为 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)在引导时运行.
如果您希望脚本在登录时为所有用户运行,我相信LoginHook是您唯一的选择,这可能就是它存在的原因.
jm6*_*666 345
按照这个:
Automator.appApplicationShow library工具栏(如果隐藏)Run shell script(来自Actions/Utilities)保存在某个地方(例如你可以Applications在你的HOME中创建一个文件夹,你会得到一个your_name.app)
转到System Preferences- > Accounts- >Login items
编辑:
我最近为这个答案赢得了一个"好回答"徽章.虽然我的解决方案很简单且有效,但在@ trisweb的回答中描述了在登录时运行任何程序或shell脚本的最简洁方法,除非您想要交互性.
使用automator解决方案,您可以执行下一步操作:

所以,要求运行脚本或退出应用程序,询问密码,在登录时运行其他自动化工作流程,在登录时有条件地运行应用程序等等......
anu*_*ava 37
像login.sh在$ HOME文件夹中一样创建shell脚本.
将以下单行脚本粘贴到脚本编辑器中:
做shell脚本"$ HOME/login.sh"
然后将其另存为应用程序.
最后将应用程序添加到您的登录项.
如果要使脚本输出可视化,可以将步骤2替换为:
tell application "Terminal"
activate
do script "$HOME/login.sh"
end tell
Run Code Online (Sandbox Code Playgroud)
如果需要多个命令,可以使用以下内容:
tell application "Terminal"
activate
do script "cd $HOME"
do script "./login.sh" in window 1
end tell
Run Code Online (Sandbox Code Playgroud)