bash的配置文件

一、shell的两种登录方式:

1、交互式登录:

(1)直接通过终端输入账号密码登录

(2)使用“su - UserName” 切换的用户

执行顺序:/etc/profile --> /etc/profile.d/*.sh --> ~/.bash_profile --> ~/.bashrc --> /etc/bashrc

2、非交互式登录:

(1)su UserName

(2)图形界面下打开的终端

(3)执行脚本

(4)任何其它的bash实例

执行顺序: ~/.bashrc --> /etc/bashrc --> /etc/profile.d/*.sh

二、bash的配置文件

1、按生效范围划分,有两类:

  • 全局配置:

    • /etc/profile
    • /etc/profile.d/*.sh
    • /etc/bashrc
  • 个人配置:
    • ~/.bash_profile
    • ~/.bashrc

2、按功能划分,存在两类:

  • profile类:为交互式登录的shell提供配置

    • 全局:/etc/profile, /etc/profile.d/*.sh
    • 个人:~/.bash_profile

      功用:

      (1) 用于定义环境变量

      (2) 运行命令或脚本
  • bashrc类:为非交互式和交互式登录的shell提供配置

    • 全局:/etc/bashrc
    • 个人:~/.bashrc

      功用:

      (1) 定义命令别名和函数

      (2) 定义本地变量

3.修改profile和bashrc文件后需生效

两种方法:

1重新启动shell进程

2 . 或source

例:

. ~/.bashrc

注意:(1) . 或source 是在当前shell中生效;bash file 是开一个子进程去生效。

(2) 脚本中不支持别名

三、bash退出任务

退出时运行的脚本

保存在~/.bash_logout文件中(用户)

在退出登录shell时运行,常用于:

  • 创建自动备份
  • 清除临时文件

四、练习

1、让所有用户的PATH环境变量的值多出一个路径,例如:/usr/local/apache/bin

在 /etc/profile.d/env. sh 文件,重新添加PATH变量。

PS1="\[\e[1;36m\][\u@\h \W]\\$\[\e[0m\]"
PATH=/usr/local/apache/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

2、用户root登录时,将命令指示符变成红色,并自动启用如下别名:

rm=‘rm –i’

cdnet=‘cd /etc/sysconfig/network-scripts/’

editnet=‘vim /etc/sysconfig/network-scripts/ifcfg-eth0’

editnet=‘vim /etc/sysconfig/network-scripts/ifcfg-eno16777736 或 ifcfg-ens33 ’ (如果系统是CentOS7)

命令符红色:

在/etc/profile.d/env.sh中定义
PS1="\[\e[1;31m22\][\u@\h \W]\\$\[\e[0m\]"

定义别名:

在 ~/.bashrc中将放入以下命令:
alias rm=‘rm –i’
alias cdnet=‘cd /etc/sysconfig/network-scripts/’
alias editnet=‘vim /etc/sysconfig/network-scripts/ifcfg-eth0’
alias editnet=‘vim /etc/sysconfig/network-scripts/ifcfg-eno16777736 或 ifcfg-ens33 ’

3、任意用户登录系统时,显示红色字体的警示提醒信息“Hi,dangerous !”

在/etc/profile.d/env.sh 中添加

echo -e "\e[1;31mHi,dangerous ! \e[0m"

4、编写生成脚本基本格式的脚本,包括作者,联系方式,版本,时间,描述等

5、编写用户的环境初始化脚本reset.sh,包括别名,登录提示符,vim的设置,环境变量等

vim  /root/reset.sh

最新文章

  1. 使用nginx为ArcGIS Server做反向代理
  2. HIT2739 The Chinese Postman Problem(最小费用最大流)
  3. C++ 中的形参与返回值
  4. iOS 沙盒(sandbox)机制和文件操作
  5. Matlab实现movieLens转矩阵
  6. 【LeetCode 1】算法修炼 --- Two Sum
  7. 使用 Async 和 Await 的异步编程
  8. Dropbox可伸缩性设计最佳实践分享
  9. Qt核心剖析:信息隐藏(三篇)
  10. Libevent(2.1.8)中的事件结构和管理
  11. c/c++赋值函数(重载=号运算符)
  12. 洛谷P1020 导弹拦截
  13. 《Redis 主从复制》
  14. 【codeforces gym】Increasing Costs
  15. javaweb浏览器url上项目名称的更改
  16. 004ICMP-type对应表
  17. 系统之间通讯方式—SOAP(web service)
  18. Android ANR优化 2
  19. Nodejs写的搬家工具知识分享
  20. 【dfs序】【二分】【主席树】【分块】bzoj3351 [ioi2009]Regions

热门文章

  1. 【Linux 网络编程】网络IP地址结构体
  2. 【6.28校内test】T3 【音乐会】道路千万条
  3. fiddler 不能抓包解决
  4. 用C#控制台编写 推箱子之类的 坐标移动----之二维坐标
  5. numpy.random.uniform(记住文档网址)
  6. JS计算两个经纬度的距离
  7. PDF转图片,在线PDF转JPG/PNG
  8. N4复习考试总结
  9. sqlite3中 timestamp使用
  10. kali下纯文本与窗口环境切换