linux的⽤户登陆,Linux系统⽤户登陆(⽰例代码)
当⼀个⽤户登陆到Linux系统时,系统会⾃动为这个⽤户加载profile类和bashrc类两类⽂件,当⽤户退出时⼜会加载logout类⽂件,这是⼀个固定的过程,我们可以通过修改这些⽂件来达到我们想要在登陆或退出时完成的动作。下⾯详细的介绍⼀下这些命令。
注意:只有超级⽤户root可以修改全局类的配置⽂件;普通⽤户只能修改其家⽬录中的个⼈配置⽂件
⾸先是profile类⽂件,这类⽂件为交互式登陆的shell进程实现功能初始化的配置⽂件,如:仅仅⽤户有效的配置⽂件:~/.bash_profile和对所有⽤户都⽣效的配置⽂件/etc/profile和/etc/profile.d/*.sh(保存了⼤量的命令(为了缓解profile⽂件过⼤)注意:在Redhat或Centos 系列的操作系统中,通常情况下,如果⼀个配置⽂件内容很多,格式复杂,我们会将其切割成多个⽚段,将切割出来的⽚段统⼀的存放
在“程序名称.d”⽬录中;在这样⽬录中所保存的⽚段⽂件,⼤多会以统⼀的⽂件后缀名来命名),作⽤为:
1)⽤于定义⽤户的环境变量
2)⽤于运⾏脚本或执⾏命令
第⼆个是bashrc类⽂件,这类为⾮交互式登陆的shell进程实现功能启动配置的配置⽂件,分别是全局:/etc/bashrc和⽤户个⼈:
~/.bashrc。作⽤为:
1)⽤于定义本地变量
2)⽤于定义命令的别名
3)定义umask
第三个是logout类,这类为交互式登陆的shell进程提供终⽌及清理类功能的配置⽂件
以上三类⽂件我们可以在每⼀个⽤户的家⽬录中查看到,⽐如:~]$ ls -a ./.bash*
./.bash_history  ./.bash_logout  ./.bash_profile  ./.bashrc
(第⼀个⽂件“./.bash_history”为历史记录的⽂件,暂时先跳过)
剩下的三个⽂件就是最开始提到的三类⽂件,它们分别包含着以下内容:~]$ cat ./.bashrc# .bashrc
# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
# Uncomment the following line if you don‘t like systemctl‘s auto-paging feature:
# export SYSTEMD_PAGER=
# User specific aliases and functions~]$ cat ./.bash_profile# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATH:$HOME/.local/bin:$HOME/bin
export PATH~]$ cat ./.bash_logout# ~/.bash_logout
根据这些脚本⽂件中的内容我们可以发现./.bash_profile⽂件会去执⾏当前⽬录下的./.bashrc⽂件,⽽./.bashrc⽂件会去执
⾏/etc/bashrc⽂件,由此我们可以得出结论,当我们在登陆系统之后会先执⾏⾃⼰的配置⽂件,然后再去执⾏系统的配置⽂件。如果在⾃⼰的脚本中有⼀些和系统配置相同的内容或变量就会被系统的配置⽂件重写。
在不同的登陆⽅式下会有不同的加载配置的⽅式,不同的登陆⽅式分别有以下两种:
1.交互式登陆的shell,⽐如:
1)直接通过某个终端输⼊帐号和密码后登陆打开的shell进程
2)使⽤su - USERNAME或su -l USERNAME执⾏切换登陆打开的shell进程
2.⾮交互式登陆的shell
1)在图形界⾯下,通过菜单或右键菜单打开的终端的shell进程
2)使⽤su USERNAME执⾏切换登陆打开的shell进程
交互式登陆的shell进程,会按照顺序加载下列配置⽂件
/etc/profile -> /etc/profile.d/*.sh(profile.d相当于就是profile) -> ~/.bash_profile -> ~/.bashrc -> /etc/bashrc
⾮交互式登陆的shell进程,会按照顺序加载下列配置⽂件
~/.bashrc --> /etc/bashrc --> /etc/profile.d/*.shlinux登录命令
所有在命令⾏中执⾏的命令的操作,只要没涉及到⽂件的修改的,⼀般都只是针对当前的shell声明周期有效;只要shell进程结束,所有设置均失效,⽐如声明⼀个变量,当我们重启当前shell之后这个变量的值就丢失了。所以配置⽂件的作⽤就是使得我们赖以⽣存的配置信息可以长期有效,只要不修改配置⽂件中的内容,每⼀次打开shell都会使曾经的配置⽣效。但是当我们使⽤⼀些修改⽂本的命令对这些已经加载的⽂件进⾏修改后,并不能及时⽣效,只有在重启之后或使⽤命令重新加载之后才能正常⽣效。可是有的时候并不能允许我们随意的重启,所以命令就称为了⼀个最重要的⽅式。让配置⽂件中新定义的配置能够⽴即⽣效的⽅式:
1.source命令,使⽤格式:
source /PATH/TO/SOME_CONF_FILES(在当前的shell中运⾏脚本中的命令,⽐如脚本中有exit命令,那么如果source运⾏,那么会退出当前shell)
. /PATH/TO/SOME_CONF_FILES
<命令,使⽤格式:
exec /PATH/TO/SOME_CONF_FILES

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。