0
点赞
收藏
分享

微信扫一扫

与用户登录shell相关的文件/etc/profile,~/bashrc等浅析


http://leejia.blog.51cto.com/4356849/777700

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。 http://leejia.blog.51cto.com/4356849/777700


    在linux中,用户的登录也就是登录shell,是通过按次序的读取配置文件,根据文件设定用户的环境,从而来完成登录。配置文件对系统非常重要,而对我们系统工程师来讲,理解他们也是至关重要的,通过配置文件我们就可以知道系统是怎么启动的,用户时怎么登陆的。顾名思义,所谓全局配置文件,是对所有用户生效,是用户登录后的默认环境,可以通过编辑文件配置。而个人的配置文件只对当前用户生效,用户也可以自己更改自己的环境配置信息。下面我们来讨论用户登录所读取的文件及各文件的作用:

与用户登录相关的全局配置文件:/etc/profile,/etc/profile.d,/etc/bashrc等。


 


与用户登录相关的个人配置文件:~/.bash_profile,~/.bashrc,~/.bash_logout(退出用到)等


 


首先我们呢来说一下登录shell的类型:交互式登录和非交互式登录


 


一:交互式登录shell:就是可以与shell进行交互,需要验证的登录。有:


1,通过控制台或远程连接,需要用户名,密码。


2,su - username(可看做交互式登录)  


 


交互式登录依次读取的文件为:/etc/profile-->/etc/profile.d/*-->(~/.bash_profile | ~/.bash_login | ~/.profile)-->~/.bashrc-->/etc/bashrc-->~/.bash_logout


这几种文件的作用分别是:


1,/etc/profile:当用户登录系统后,通常使用这个文件给给用户提供默认的环境。这个默认环境实际上就是一组环境变量的定义,最后会调用/etc/profile.d中的文件。文件作用于全部用户。文件中的各环境变量的意思如下:


    PATH:根据UID设定PATH要不要到含有sbin的系统命令目录


 


    USER:根据当前登陆用户名设置。


 


  MAIL:根据用户账号设置当前用户的邮件存放目录。


 


  HISTSIZE:是指保存历史命令记录的条数。


 


  LOGNAME:是指当前用户的登录名。


 


  HOSTNAME:内容是/bin/hostname,如果要用到主机名的话,通常是从这个环境变量中来取得的。


    


    INPUTRC:如果用户没有自定义输入的按键功能,则设置INPUTRC=/etc/inputrc,此文件定义bash的热键等数据,有的话就不设置。


   


 2,/etc/profile.d:主要是对shell的设置,作用于全部用户。其中,这个目录文件中有一个lang.sh脚本会调用文件/etc/sysconfig/i18n,这是一个觉得我们bash默认使用何种语系的重要配置文件,文件中重要的是LANG变量的设置。


 


3,~/.bash_profile:当用户登录时,该文件仅仅执行一次,默认情况下,他设置一些环境变量,执行用户的.bashrc文件,作用于当前用户。如果这个文件不存在会读取~/.bash_login,这个文件还不存在的话读取~./profile。


 


4,~/.bashrc: 当用户登录时以及每次打开新的shell时,该该文件被读取。存有改用户的的所有的命令别名等;作用于当前用户。


 


5,/etc/bashrc:为运行bash shell的用户执行此文件,对bash进行设置.当bash shell被打开时,该文件被读取。作用于所有用户。


 


6,~/.bash_logout:当用户退出bash时读取该文件,执行一些操作。作用于当前用户。


 


 



二,非交互式登录shell:就是用户获取shell后,一次性读取全部文件,不与用户进行交互。例:



1,su username(可看做非交互式shell)  



2,执行脚本的shell



3,图形界面下打开的模拟shell 


 


非交互式登录依次读取的文件为: ~/.bashrc-->/etc/bashrc-->/etc/profile.d/*


各文件对用户shell登录的作用和交互式登录时的作用相同(需要说明的是./bashrc文件会调用/etc/bashrc文件)


本文出自 “佳” 博客,请务必保留此出处http://leejia.blog.51cto.com/4356849/777700

 

 

===========================

ksh的变量设置文件是./kshrc

 

=================


整理了一下

如何查看本机的linux使用的是什么shell ?

 more /etc/shells 可以看到本系统中可以使用哪些shell

 echo $SHELL  可以查看当前默认的shell

一般来讲/etc/passwd文件中最后一项是每个用户使用的shell,但不见得每个都是shell

$ useradd guest
$ more /etc/passwd

代码:
guest:x:502:502::/home/guest:/bin/bashguest:x:502:502::/home/guest:/bin/bash

请问这里的学问是?

看来你还得学学useradd命令
useradd [-g XXXX] [-G xxxx] [-d /home/guest -m /home/guest] -s /bin/false]
或者
useradd [-g XXXX] [-G xxxx] [-d /home/guest -m /home/guest] -s /bin/rbash]
或者
useradd [-g XXXX] [-G xxxx] [-d /home/guest -m /home/guest] -s /bin/nologin]

Go_To_CU  

 

 

 

举报

相关推荐

0 条评论