擴展:html
bashrc和bash_profile的區別 http://ask.apelearn.com/question/7719
簡易審計系統: http://www.68idc.cn/help/server/linux/2014042190951.html
關於PROMPT_COMMAND環境變量的含義 http://www.linuxnote.org/prompt_command-environment-variables.html前端
[root@yong-02 ~]# cat /etc/passwd |wc -l 25 [root@yong-02 ~]# cat /etc/passwd |grep 'root' root:x:0:0:root:/root:/bin/bash operator:x:11:0:operator:/root:/sbin/nologin
[root@yong-02 ~]# sleep 1000 ^Z [1]+ 已中止 sleep 1000
[root@yong-02 ~]# fg sleep 1000
[root@yong-02 ~]# bg [1]+ sleep 1000 &
[root@yong-02 ~]# jobs [1]- 運行中 sleep 1000 & [2]+ 已中止 sleep 2000
[root@yong-02 ~]# jobs [1] 運行中 sleep 1000 & [2]+ 已中止 sleep 2000 [3]- 運行中 sleep 3000 &
[root@yong-02 ~]# echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin [root@yong-02 ~]# echo $HOME /root [root@yong-02 ~]# echo $HISTSIZE 1000
[root@yong-02 ~]# env XDG_SESSION_ID=1 HOSTNAME=yong-02 SELINUX_ROLE_REQUESTED= TERM=xterm SHELL=/bin/bash HISTSIZE=1000 SSH_CLIENT=192.168.180.1 50125 22 SELINUX_USE_CURRENT_RANGE= SSH_TTY=/dev/pts/0 USER=root LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=01;05;37;41:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=01;36:*.au=01;36:*.flac=01;36:*.mid=01;36:*.midi=01;36:*.mka=01;36:*.mp3=01;36:*.mpc=01;36:*.ogg=01;36:*.ra=01;36:*.wav=01;36:*.axa=01;36:*.oga=01;36:*.spx=01;36:*.xspf=01;36: MAIL=/var/spool/mail/root PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin PWD=/root LANG=zh_CN.UTF-8 SELINUX_LEVEL_REQUESTED= HISTCONTROL=ignoredups SHLVL=1 HOME=/root LOGNAME=root SSH_CONNECTION=192.168.180.1 50125 192.168.180.135 22 LESSOPEN=||/usr/bin/lesspipe.sh %s XDG_RUNTIME_DIR=/run/user/0 _=/usr/bin/env
自定義變量規則:linux
[root@yong-02 ~]# name=li yong -bash: yong: 未找到命令 [root@yong-02 ~]# name="li yong" [root@yong-02 ~]# echo $name li yong
[root@yong-02 ~]# name="'li' yong" [root@yong-02 ~]# echo $name 'li' yong
[root@yong-02 ~]# name=`pwd` [root@yong-02 ~]# echo $name /root
[root@yong-02 ~]# a=1 [root@yong-02 ~]# b=2 [root@yong-02 ~]# c=3 [root@yong-02 ~]# d="$a$b$c" [root@yong-02 ~]# echo $d 123
[root@yong-02 ~]# echo $SSH_TTY /dev/pts/0 [root@yong-02 ~]# w 15:33:38 up 58 min, 1 user, load average: 0.00, 0.01, 0.05 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT root pts/0 192.168.180.1 14:38 2.00s 0.13s 0.01s w
[root@yong-02 ~]# pstree systemd─┬─NetworkManager───2*[{NetworkManager}] ├─VGAuthService ├─agetty ├─auditd───{auditd} ├─chronyd ├─crond ├─dbus-daemon───{dbus-daemon} ├─firewalld───{firewalld} ├─lvmetad ├─master─┬─pickup │ └─qmgr ├─polkitd───5*[{polkitd}] ├─rsyslogd───2*[{rsyslogd}] ├─sshd───sshd───bash───pstree ├─systemd-journal ├─systemd-logind ├─systemd-udevd ├─tuned───4*[{tuned}] └─vmtoolsd───{vmtoolsd}
#export a=111 #export PATH="$var_PATH" #export 可查看當前系統下的全部環境變量.
環境變量分爲系統層次變和用戶層次web
不太好,編輯的時候會有一段提示: 這不是一個好主意來改變這個文件,除非你知道你 正在作的事情。若是你想更改某些環境變量,最好在/etc/profile.d /下去自定義,建立格式爲XXX.sh, 在將來的更新將防止合併的必要性。shell
[root@yong-02 ~]# ls /etc/profile.d 256term.csh colorgrep.csh colorls.sh less.csh vim.sh 256term.sh colorgrep.sh lang.csh less.sh which2.csh bash_completion.sh colorls.csh lang.sh vim.csh which2.sh [root@yong-02 ~]# vim /etc/profile.d/path.sh #!/bin/path export PATH=$PATH:/tmp/:/data/bin/
編輯完後要source /etc/profile,加載的時候會調用profile.d下面的全部文件。apache
/etc/bashrc 設置PS1和umask; 它和/etc/profile同樣,在/etc/bashrc設置很差,要在/etc/profile.d下去定義,建立格式爲.sh的文件vim
進去編輯配置,完成後source /etc/profile 加載一下。bash
[root@yong-02 ~]# vim /etc/profile.d/umask.sh #bsah/bin PS1="[\u@\h-\t \W]\$ " [root@yong-02 ~]# source /etc/profile [root@yong-02-15:52:15 ~]$ ls 1.sh anaconda-ks.cfg multi-user.target reboot.target 1.txt auto_install_apache.sh passwd rescue.target 1.txt.bak graphical.target poweroff.target test
\u 用戶名 \h主機名 \t 時間 \W 當前目錄 \w 目錄的完整路徑 $ 就是#,若是普通用戶就是$less
默認 PS1='[\u@\h \W]\$ 'dom
.bash_profile 定義用戶本身的環境變量,每一個用戶均可以使用該文件輸入專用於本身使用的
shell信息,當用戶登錄時,該文件僅僅執行一次
.bashrc :文件包含專屬用戶本身的shell的bash信息,登錄時以及每次打開新的shell時,該文件都被讀取。能夠將用戶之定義的alias或者自定義變量寫到這個文件中
.bash_history 記錄命令歷史用的
.bash_logout 退出shell時,會執行該文件,能夠把一些清理的工做放到這個文件中。
/etc/profile 用戶環境變量,交互、登錄才執行(不要修改)
概念:/etc/profile這個文件預設了幾個重要的變量,例如PATH、USER、LOGNAME、等變量。
/etc/bashrc 用戶不用登錄,執行shell就生效。(不要修改)
這個文件主要預設umask以及PS1;
這個PS1就是咱們在輸入命令時前面的那串字符;
例如Linux系統的就是[root@localhost ~]#
咱們能夠看一下PS1的值,以下:
[root@yong-02 ~]# echo $PS1
[\u@\h \W]\$
其中,\u指用戶,\h指主機名,\W指當前目錄,\$指字符# (若是是普通用戶則爲¥)
~/.bashrc
概念:該文件包含專屬於本身的shell的bash信息;
當登錄或每次新打開新的shell時,該文件會被讀取;
例如,你能夠將用戶自定義的別名或者自定義變量寫到這個文件中。
~/.bash_profile
概念:該文件定義了用戶的我的化路徑於環境變量的文件名稱;
每一個用戶均可使用該文件輸入專屬本身的shell信息,當用戶登錄時,該文件僅執行一次。
~/.bash_history
概念:該文件用戶記錄命令歷史。
~/.bash_logout
概念:當退出shell時,會執行該文件,能夠將一些清理的工做放到這個文件中。
更改用戶自定義顏色:
[root@localhost /]# PS1='[\033[01;32m]\u@\h[\033[00m]:[\033[01;36m]\w[\033[00m]\$ '
有時候咱們須要對線上用戶操做記錄進行歷史記錄待出現問題追究責任人,,但Linux系統自帶的history命令用戶有自行刪除權限,那怎麼設置可讓用戶的操做記錄實時記錄,並保證普通用戶無權刪除呢?本文教你一招
1.mkdir -p /usr/local/domob/records/
chmod 777 /usr/local/domob/records/
chmod +t /usr/local/domob/records/
2.vi /etc/profile 在最後添加下面的代碼
if [ ! -d /usr/local/domob/records/${LOGNAME} ] then mkdir -p /usr/local/domob/records/${LOGNAME} chmod 300 /usr/local/domob/records/${LOGNAME} fi export HISTORY_FILE="/usr/local/domob/records/${LOGNAME}/bash_history" export PROMPT_COMMAND='{ date "+%Y-%m-%d %T ##### $(who am i |awk "{print \$1\" \"\$2\" \"\$5}") #### $(history 1 | { read x cmd; echo "$cmd"; })"; } >>$HISTORY_FILE'