我知道我曾经知道如何执行此操作,但是...如何在登录UNIX时运行脚本(bash正常)?
Answers:
来自维基百科
当Bash启动时,它将以各种不同的脚本执行命令。
当Bash作为交互式登录Shell调用时,它首先从文件/ etc / profile中读取并执行命令(如果该文件存在)。读取该文件后,它将按该顺序查找〜/ .bash_profile,〜/ .bash_login和〜/ .profile,并从存在且可读的第一个命令中读取并执行命令。
当退出登录外壳程序时,Bash从〜/ .bash_logout文件(如果存在)中读取并执行命令。
启动不是登录外壳程序的交互式外壳程序时,如果该文件存在,则Bash从〜/ .bashrc读取并执行命令。使用--norc选项可以禁止这种情况。--rcfile file选项将强制Bash从文件而不是〜/ .bashrc中读取并执行命令。
登录时,大多数外壳程序都会执行登录脚本,您可以使用该脚本执行自定义脚本。Shell执行的登录脚本当然取决于Shell:
您可能会发现您正在使用什么shell
echo $SHELL
从提示。
对于“登录”的更宽泛的定义,了解启动X的大多数发行版中的.xsessionrc将在启动X会话时执行是很有用的。
如果您希望只运行一个脚本,而只运行一个脚本,则可以使其成为用户默认的shell。
echo "/usr/bin/uptime" >> /etc/shells
vim /etc/passwd
* username:x:uid:grp:message:homedir:/usr/bin/uptime
可能会产生有趣的效果:)(它不太安全,所以不要太信任它。没有什么比将默认外壳程序设置为擦除驱动器的脚本...了。。。。。可能非常有用)
Launchd
是OS X中的首选方式。
如果您希望它在您的登录名上运行,则将其放入 ~/Library/LaunchAgents
开始launchd
项目
launchctl load /Library/LaunchDaemons/com.bob.plist
停止项目
launchctl unload /Library/LaunchDaemons/com.bob.plist
例 com.bob.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.bob</string>
<key>RunAtLoad</key>
<true/>
<key>ProgramArguments</key>
<array>
<string>/usr/bin/java</string>
<string>-jar</string>
<string>/Users/user/program.jar</string>
</array>
</dict>
</plist>
几天来,我对这个问题感到沮丧。在ubuntu上没有任何工作。如果我将呼叫放在/ etc / profile中,则在尝试登录时全部崩溃。我不能使用“启动应用程序”,因为那不是我想要的。这样只会为该当前用户设置脚本。
最后,我找到了这篇小文章:http : //standards.freedesktop.org/autostart-spec/autostart-spec-0.5.html
解决方案是:
找出$ XDG_CONFIG_DIRS路径:
回声$ XDG_CONFIG_DIRS
将您的脚本放在该目录中
在/etc/profile
其中添加执行脚本的条目。这将在每次登录时运行。如果您仅针对自己的帐户执行此操作,请使用您的登录脚本之一(例如.bash_profile
)来运行它。