与用户登录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
?
=================
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??
?
?
?
總結
以上是生活随笔為你收集整理的与用户登录shell相关的文件/etc/profile,~/bashrc等浅析的全部內容,希望文章能夠幫你解決所遇到的問題。