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

来源:互联网 发布:实验四栅格数据编码 编辑:程序博客网 时间:2024/05/12 11:01

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

 

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

http://www.yesadmin.com/301/134459/index.html

整理了一下

如何查看本机的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  

 

 

 

原创粉丝点击