bash是 Bourne Again Shell簡稱 ,從unix系統的sh發展而來
查看當前shell
echo $SHELL
查看系統支持的shell
cat /etc/shells
cd /bin
ls -la *sh
一、 bash shell的配置
變量可分為自定義變量和環境變量
他們作用范圍不同
set 可以查看所有變量
set|more 查看 enter一行一行查看
set|less enter換行 pagedown換頁 q退出
env只能查看環境變量
bash shell的設置方式
1.通過自定義變量設置
key=value
比如 aaa=ajax
echo aaa即可得到ajax變量名不能以數字或者特殊字符開頭key1=testone不可key1= ′ testone ′ 而且等號左右2邊不可有空格key2="key2is aaa即可得到ajax變量名不能以數字或者特殊字符開頭key1=testone不可key1=′testone′而且等號左右2邊不可有空格key2="key2is key1" 雙引號能解析
key1='kkk'
key2='kk2'
key3=key1−−−− key1−−−− key2
echo $key3
kkk----kk2
unset key3 刪除變量
常見的變量
set|grep HIST
HISTFILESIZE :記錄歷史指令保存的最大值
HISTSIZE:執行history時顯示的個數
COLUMNS:終端窗口顯示的寬度
LINES:終端窗口顯示的高度
PS1:設置提示符號前面的內容樣式(\d,\h,\t,\u,\W,\!,\$,\l 等)
\u 當前用戶
\W 當前工作目錄
\w 當前完整的工作目錄從/算起
\h 主機名
\t 當前時間
\# 登錄後下達的第幾個指令
比如
PS1='[\u@\h-\w-\t-\#]'
[root@bogon-/var/var/lib-08:35:26-38]
2.通過別名(Aliases)設置
設置,查看所有,查看某別名值,type -a ,刪除
type ll
[root@bogon-/var/var/lib-08:35:26-38]type ll
ll 是 `ls -l --color=auto' 的別名
[root@bogon ~]# alias ll
alias ll='ls -l --color=auto'
[root@bogon-/var/var/lib-08:35:43-39]type -a ls
ls 是 `ls --color=auto' 的別名
[root@bogon-/var/var/lib-08:35:45-40]type cd
cd 是 shell 內嵌
查看所有別名 alias
設置
alias cls='clear'
[root@bogon-/var/var/lib-08:42:55-51]type cls
cls 是 `clear' 的別名
查看alias的值 alias cls
[root@bogon-/var/var/lib-08:43:00-52]alias cls
alias cls='clear'
刪除別名定義
unalias cls
3.通過set指令設置
set自身查看所有變量的值
設置shell內部的屬性值(set -o noclobber,set -o vi)
ll>a.txt 可以寫入
ll>a.txt 可以覆蓋
ll>a.txt
-bash: a.txt: 無法覆蓋已存在的文件
ll>>a.txt 可以追加
set -o noclobber /*設置禁止重定向覆蓋*/
set +o noclobber /*設置允許重定向覆蓋*/
[root@bogon ~]# set -o
allexport off
braceexpand on
emacs on
errexit off
errtrace off
functrace off
hashall on
histexpand on
history on
ignoreeof off
interactive-comments on
keyword off
monitor on
noclobber off
noexec off
noglob off
nolog off
notify off
nounset off
onecmd off
physical off
pipefail off
posix off
privileged off
verbose off
vi off
xtrace off
[root@bogon ~]# set +o
set +o allexport
set -o braceexpand
set -o emacs
set +o errexit
set +o errtrace
set +o functrace
set -o hashall
set -o histexpand
set -o history
set +o ignoreeof
set -o interactive-comments
set +o keyword
set -o monitor
set +o noclobber
set +o noexec
set +o noglob
set +o nolog
set +o notify
set +o nounset
set +o onecmd
set +o physical
set +o pipefail
set +o posix
set +o privileged
set +o verbose
set +o vi
set +o xtrace
-o,+o
set -o vi
設置輸入命令的模式為vi下
ls 按esc 進入vim命令行模式編輯狀態
4.通過環境變量設置
自定義變量只能在當前shell環境下有效
環境變量在整個主機下的shell環境中有效
可使用 export variable name來設置
定義過的普通變量和通過export 變量名來升級為環境變量
如果重新打開連接會話(root或者admin 身份登錄)
key1,key2都是沒有的
常用變量:
PATH
PATH=$PATH.:
將隱藏的路徑設置到PATH中,會帶來安全問題?
[root@bogon ~]# which chgrp
/usr/bin/chgrp
[root@bogon ~]# which ll
alias ll='ls -l --color=auto'
/usr/bin/ls
二、shell startup scripts原理
login和non-login
用戶登錄或者其它非登錄動作時自動執行的一些腳本
建立自定義變量或者執行set設置shell
建立環境變量,設置其它程序
使用alias 簡化後續操作
登錄時執行哪些程序
login
完整登錄流程(CentOS)
/etc/profile (PATH/USR/HOSTNAME/HISTSIZE等))
/etc/profile.d/*.sh (顏色語言 指令別名)
~/.bash_profile
~/.bashrc
/etc/bashrc
~/.bash_login
~/.profile
~/.bash_profile,~/.bash_login,~/.profile (只能依次讀取其中一個)
任何一個讀取成功,不再讀取下一個
各自home目錄的只對各自生效
修改完成功後 source 重新加載腳本即可
non-login
無需登錄即可運行的shell,如su和 原bssh下的新bash動作
涉及到的腳本
~/.bashrc 和/etc/bashrc
/etc/profile.d/*.sh (顏色語言 指令別名)
執行bash命令
~/.bash_logout 用戶注銷時執行的命令,備份,清理等
source 別名 .