【shell编程基础0】bash shell编程的基本配置
前面一篇“shell编程之变量篇”主要讲述下shell编程的变量的基本知识:设置变量的方式,自定义变量和环境变量的差别,变量的替换、删除、测试等。
这一篇主要是讲述在bash shell下的一些基本配置:别名,命令执行,配置文件的读取,可以自定义修改的配置文件。
- 别名设置
别名设置方式:alias
alias cl='clear'
如上所示的形式
如果希望每次启动shell都能使用这些别名的话,修改自己用户目录下的"~/.bashrc"配置文件,如下图,在文件中找一个适当的位置写入就可以了。
# some more ls aliases
alias ll='ls -alF'
alias la='ls -A'
alias l='ls -CF' # add by user
alias cl='clear'
alias lm='ls -al | more'
#alias rm='rm -i'
#alias cp='cp -i'
#alias mv='mv -i'
alias hi='history'
写完之后使用source命令应用
# source ~/.bashrc
- 历史命令
history
n 列出最近的几条历史命令
-c 消除历史命令
-a 将新增的历史命令写入到file中,没有指明的话就是默认在 ~/.bash_history
历史命令最有用的一点就是可以查看历史命令,并且根据他的编号来执行历史命令。具体如下
#使用
#执行第numer条命令
$ !number #number是 指历史命令的第几条 #执行上一条命令
$ !! #两个感叹号就是执行上一条命令
- 命令的寻找顺序
由之前学习的知识可以知道我们的命令存在形式很多种:绝对路径下的命令,相对路径下的命令,别名指向的命令,还有bash的内建命令,那么对于同一个命令,当这几种都冲突的时候,他的优先级是怎样的。
按照序号顺序的优先级:
- 以相对路径和绝对路径执行的命令优先
- 由alias找到的别名优先
- bash内置的命令
- 通过PATH变量寻找的命令
- bash的一些配置文件
这里有两个很好玩的配置文件,是tty1-tty6的开机启动的配置文件。
/etc/issue bash登录界面显示信息
/etc/motd bash登录之后的显示信息
这两个文件的作用不在图形界面的shell中显示,需要打开tty登录。
这里可以看下我的配置登录界面的效果图:

图就是我在/etc/issue中修改的显示信息。
- 接下来说说一些其他的配置文件
说之前我们分一下login-shell与non-login-shell的差别。
简单的说差别就在于login-shell是在tty1-tty6中登录的bash shell,non-login-shell就是图形界面登录的bash shell
login-shell读取的文件:
1. /etc/profile 系统全局的设置文件
2. ~/.bashrc或者~/.profile 用户自定义的设置文件
/etc/profile是一个全局的设置,一般不需要更改
总结:login-shell的读取配置文件流程

图中的 ~/.bash_profile 在ubuntu中是没有的,这个文件是调用~/.bashrc文件的,主要是为了兼容老用户的习惯,ubuntu中可能是删除了这个文件
~/.bashrc 文件login-shell 和non-login-shell都会读取
2.还有一些其他常用的配置文件
- PATH变量在 /etc/environment 文件中
- /etc/profile.d/*.sh 该文件夹下的脚本文件主要用于设置bash的操作接口和字体颜色,语系,别名
- /etc/manpath.config 寻找man page的路径
- ~/.bash_history 历史命令文件
- ~/.bash_logout 用户注销之后再帮我完成什么动作,在这里配置
【shell编程基础0】bash shell编程的基本配置的更多相关文章
- Linux编程 3 (初识bash shell与man查看手册)
一.初识bash shell 1.1 启动 shell GNU bash shell 能提供对Linux系统的交互式访问.通常是在用户登录终端时启动,登录时系统启动shell依赖于用户账户的配置. ...
- 《网络安全编程基础》之Socket编程
<网络安全编程基础>之Socket编程 我的代码 server.c // server.cpp : Defines the entry point for the console appl ...
- [.net 面向对象编程基础] (2) 关于面向对象编程
[.net 面向对象编程基础] (2) 关于面向对象编程 首先是,面向对象编程英文 Object-Oriented Programming 简称 OOP 通俗来说,就是 针对对象编程的意思 那么问 ...
- 【shell编程基础1】shell变量篇
Bash shell bash shell 是bourne shell 的升级版,“bourne again shell”.ubuntu的默认shell. 预备知识 1. "#!" ...
- Linux基础之bash shell介绍及基本特性
今天继续讲Linux基础知识,内容是关于bash shell的.分享以下bash shell的相关知识,例如基本特性等. 1.8)bash shell的介绍 1.8.1)什么是bash shell ...
- shell重温---基础篇(shell变量&字符串以及git GUI运行shell脚本方式)
既然是基础篇那肯定是需要对shell的各种需要注意的基本点进行说明了.接下来就是show time... shell呢,是一个用C语言编写的应用程序,是用户使用linux的桥梁.所以呢,他既是一 ...
- shell脚本学习之Bash shell 里各种括号的用法
今天在 SegmentFault 上看到又有人问起关于Shell里各种括号的问题.对于很多玩Shell的人,括号是个很尴尬的问题,用起来没问题,说起来不明白,我在这里总结一下Bash Shell几种括 ...
- 【网络编程1】网络编程基础-TCP、UDP编程
网络基础知识 网络模型知识 OSI七层模型:(Open Systems Interconnection Reference Model)开放式通信系统互联参考模型,是国际标准化组织(ISO)提出的一个 ...
- shell重温---基础篇(shell数组&数组操作)
上篇博客已经分析重温了shell的运行方式以及其中的变量还有字符串,之后按照套路就是数组方面了,废话不多说,直接进入正题哈.(小白笔记,各位看官勿喷...) bash shell呢,支持一位数 ...
随机推荐
- Digital Tutors - Creating an Action Adventure Puzzle in Unity学习笔记
遇到的问题: 1 第11节Scripting the pressure plates中需要获取子物体的Animator组件,教程使用的语句如下: ”SwitchAnim = GetComponentI ...
- wemall doraemon中Android app商城系统工具集合类,包含各种程序中用到的静态方法
wemall doraemon中Android app商城系统工具集合类,包含各种程序中用到的静态方法,可用于其他商城或者系统的编程参考 package cn.zzu.edu.wemall.utils ...
- Fibonacci数列前n项值的输出(运用递归算法)
1.斐波那契数列: 又称黄金分割数列,指的是这样一个数列:0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, ... 在数学上,斐波纳契数列以如下被以递归的方法 ...
- 对VC++6.0爱得深沉(一)安装vc++6.0,支持winXP,win7,win8.1,win10
[欢迎入坑] 从这里起,我称VC++6.0为小c. 为什么我对小c爱得深沉? 虽然饱受非议,但是,我只想说,我太单纯,小c轻轻松松成功运行在各个win平台,对于我来说她:高速.小巧.便捷.听话.可定制 ...
- Azure Messaging-ServiceBus Messaging消息队列技术系列6-消息回执
上篇博文中我们介绍了Azure Messaging的重复消息机制.At most once 和At least once. Azure Messaging-ServiceBus Messaging消息 ...
- mybatis的学习笔记
前几天学习了mybatis,今天来复习一下它的内容. mybatis是一个基于Java的持久层框架,那就涉及到数据库的操作.首先来提出第一个问题:java有jdbc连接数据库,我们为什么还要使用框架呢 ...
- Linux之kill,pkill,killall命令
kill,pkill,killall这些命令都是用来杀死进程的 查找进程的方法: ps -ef|grep pidof 进程名 ps命令 http://www.cnblogs.com/along1226 ...
- 一个关于Linux升级Python后yum的小问题
前几天在自己的阿里云服务器安装好Python3.5.2之后,顺便删除了原有的/usr/bin/python(因为我知道系统自带的是Python2,而且也会有/usr/bin/python2这个文件,所 ...
- 核心模块Path
核心模块Path 作用:用于帮助程序员来操作硬盘上的路径. 核心模块注意点:当引用核心模块的时候直接require('模块名'),不需要加任何路径或者后缀. Path中的常用API: dirname( ...
- jPaginate 一个非常好用的分页插件
之前报馆项目用的前端框架easyui,还是用不太习惯,因此换了一个框架,最近为此找分页插件,偶然间看见一个非常好用的分页插件JPaginate Paginate是基于jquery的分页插件,非常轻量, ...