我知道我曾经知道如何做到这一点,但是...如何在unix上登录时运行脚本(bash可以)?
来自维基百科Bash
当Bash启动时,它会在各种不同的脚本中执行命令.
当Bash作为交互式登录shell调用时,它首先从文件/ etc/profile中读取并执行命令(如果该文件存在).在读取该文件之后,它按顺序查找〜/ .bash_profile,〜/ .bash_login和〜/ .profile,并从存在且可读的第一个命令中读取并执行命令.
当登录shell退出时,Bash从文件〜/ .bash_logout读取并执行命令(如果存在).
当启动不是登录shell的交互式shell时,如果该文件存在,Bash将从〜/ .bashrc读取并执行命令.使用--norc选项可以禁止此操作.--rcfile文件选项将强制Bash从文件而不是〜/ .bashrc读取和执行命令.
登录时,大多数shell都会执行登录脚本,您可以使用该脚本执行自定义脚本.shell执行的登录脚本当然取决于shell:
bash:.bash_profile,.bash_login,.profile(用于向后兼容性)
sh:.profile
tcsh和csh:.login
zsh:.zshrc
你可以通过这样做找出你正在使用的shell
echo $SHELL
从提示.
对于稍微宽泛的"登录"定义,知道在启动X时大多数发行版都很有用,你的.xsessionrc将在你的X会话启动时执行.
当使用bash,第一~/.bash_profile
,~/.bash_login
并~/.profile
用于交互式登录shell将会运行.我相信~/.profile
除了Bash之外,它通常由Unix shell运行.Bash将运行~/.bashrc
非登录交互式shell.
我通常把我想要的所有内容都放在其中.bashrc
,然后运行它.bash_profile
,在那里我还设置了一些应该在我登录时运行的东西,比如设置ssh-agent
或运行screen
.
如果您希望运行一个脚本而只运行一个脚本,则可以将其设置为用户默认shell.
echo "/usr/bin/uptime" >> /etc/shells vim /etc/passwd * username:x:uid:grp:message:homedir:/usr/bin/uptime
可以有有趣的效果:)(它不安全,所以不要太信任它.没有什么比设置你的默认shell是擦除你的驱动器的脚本....虽然,...我可以想象一个场景,可能非常有用)