前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >Linux-Bash配置

Linux-Bash配置

作者头像
悠扬前奏
发布2019-05-30 20:25:30
发布2019-05-30 20:25:30
5.5K00
代码可运行
举报
运行总次数:0
代码可运行

1. bash登录欢迎信息

issue

bash登陆后显示的欢迎信息由/etc/issue,/etc/issue.net(远程登录)设定。 例如,文件内容为:

代码语言:javascript
代码运行次数:0
复制
[root@iZwz9ayvrn26ptadymu9ymZ ~]# cat /etc/issue
\S
Kernel \r on an \m

那么登录时显示的信息为:

代码语言:javascript
代码运行次数:0
复制
CentOS Linux7 (Core)
Kernel 3.10.0-693.5.2.el7.x86_64 on an x86_64

issue文件内可以设置的参数有:

代码

含义

\d

本地端时间的日期

\l

显示第几个终端机接口

\m

显示硬件等级

\n

显示主机网络名称

\O

显示domain name

\r

操作系统的版本(相当于 uname -r)

\t

显示本地端时间的时间

\S

操作系统名称

\v

操作系统的版本

motd

登录后可以显示一些通知信息,在/etc/motd中设。

2.bash中的环境配置文件

2.1 login shell和non-login shell

  • login shell:取得bash需要完整的登录流程。
  • non-login shell:取得bash接口的方法不需要重复登录的操作。

在login shell中,登陆后读取两个配置文件:

  1. /etc/profile:系统全局配置文件
  2. ~/.bash_profile~/.bash_login~/.profile:使用者个人配置文件

2.2 /etc/profile

全局配置文件,设定的变量主要有:

  • PATH:根据UID决定PATH要不要含有sbin的系统指令目录 if [ "$EUID" = "0" ]; then pathmunge /usr/sbin pathmunge /usr/local/sbin else pathmunge /usr/local/sbin after pathmunge /usr/sbin after fi
  • MAIL:依据账号设定使用者的mailbox到/var/spool/mail账号名
  • USER:根据用户的账号设定改变量
  • HOSTNAME:根据主机hostname指令决定该变量内容 HOSTNAME=`/usr/bin/hostname 2>/dev/null`
  • HISTORYSIZE:历史指令记录数量
  • unmask:包括root默认为022而一般用户为002 if [ $UID -gt 199 ] && [ "`/usr/bin/id -gn`" = "`/usr/bin/id -un`" ]; then umask 002 else umask 022 fi

此外,改文件还会引入其他的数据。

  • /etc/profile.d/*.sh /etc/profile 中以下代码引入
代码语言:javascript
代码运行次数:0
复制
for i in /etc/profile.d/*.sh ; do
    if [ -r "$i" ]; then
        if [ "${-#*i}" != "$-" ]; then
            . "$i"
        else
            . "$i" >/dev/null
        fi
    fi
done

这些文件规范了bash操作接口的颜色,语系,ll,ls,vi,which等命令的别名。如果要在全局设定共享命令,可以再这个文件夹下面建立扩展名为.sh的文件。

  • /etc/locale.conf 由/etc/profile.d/lang.sh引入。 对LANG/LC_ALL等变量进行设定,决定了bash使用何种语系。
  • /usr/share/bash-completion/completions/*
  • 由/etc/profile.d/bash_completion.sh引入。
  • [tab]能够进行命令补齐,文件名补齐,指令的选项/参数补齐。就是在这个目录中找到相应的指令来处理的。

2.3 ~/.bash_profile

bash读取/etc/profile并执行之后,会读取用户个人配置文件,按照如下顺序查找,并读取找到的第一个:

  1. ~/.bash_profile
  2. ~/.bash_login
  3. ~/.profile

其文件内容为:

代码语言:javascript
代码运行次数:0
复制
# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
    . ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/bin

export PATH

可以看到,文件对PATH变量进行了补充,还读取了bashrc文件

那么,login shell的配置文件读取流程为:

login shell配置文件读取流程

2.3 ~/.bashrc

用户个人的配置信息存放在~/.bashrc中,其内容一般为:

代码语言:javascript
代码运行次数:0
复制
# .bashrc

# User specific aliases and functions

alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'

# Source global definitions
if [ -f /etc/bashrc ]; then
    . /etc/bashrc
fi

如果有修改,需要主要后重新登录才会生效。 或者用source或者小数点(.)符号重新载入

代码语言:javascript
代码运行次数:0
复制
srouce ~/.bashrc
. ~/.bashrc

可以看到~/.bashrc最后调用了/etc/bashrc文件,这是CentOS特有的,其功能为:

  • 依据不同的UID规范出unmask的值
  • 依据不同的UID规范出提示字符
  • 调用 /etc/profile.d/*.sh的设定

2.4 其他配置文件

  • /etc/man_db.conf man命令的man page路径
  • ~/.bash_history 上次登录的历史指令
  • ~/.bash_logout 注销bash后,系统执行的任务

3 terminal环境设定

3.1 stty

stty(setting tty)可以查看或者设定terminal的输入按键含义(另起笔记学习)。 查看当前stty参数:

代码语言:javascript
代码运行次数:0
复制
[root@iZwz9ayvrn26ptadymu9ymZ ~]# stty -a
speed 38400 baud; rows 26; columns 69; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>;
eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z;
rprnt = ^R; werase = ^W; lnext = ^V; flush = ^O; min = 1; time = 0;
-parenb -parodd -cmspar cs8 -hupcl -cstopb cread -clocal -crtscts
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl
ixon -ixoff -iuclc -ixany -imaxbel -iutf8
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0
bs0 vt0 ff0
isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop
-echoprt echoctl echoke

部分解释为:

  • intr:发送interrupt(中断)信号给正在run的进程
  • quit:发送quit信号给正在run的进程
  • erase:向后删除字符
  • kill:删除目前指令行的文字
  • eof:End of file 结束输入
  • start:程序停止之后,重启其output
  • stop:停止目前屏幕输出
  • susp:发送terminal stop信号给正在run的程序

设定参数的命令为:

代码语言:javascript
代码运行次数:0
复制
stty [指令] [按键]

3.2 set

set可以显示所有的变量,可以设置输出指令输入/输出的环境(另起笔记学习),其格式为

代码语言:javascript
代码运行次数:0
复制
set [-uvCHhmBx]
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017.12.27 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. bash登录欢迎信息
    • issue
    • motd
  • 2.bash中的环境配置文件
  • 2.1 login shell和non-login shell
    • 2.2 /etc/profile
    • 2.3 ~/.bash_profile
    • 2.3 ~/.bashrc
  • 2.4 其他配置文件
  • 3 terminal环境设定
  • 3.1 stty
    • 3.2 set
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档