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="key2isaaa即可得到ajax变量名不能以数字或者特殊字符开头key1=testone不可key1=′testone′而且等号左右2边不可有空格key2="key2iskey1" 双引号能解析
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来设置

unset 变量名可以删除变量

定义过的普通变量和通过export 变量名来升级为环境变量,在子bash里生效

如果重新打开连接会话(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 别名 .

history 历史命令
1007 set|grep HI
1008 set|grep HISTFILE
1009 set|grep HIST
1010 cat /root/.bash_history
1011 vim /root/.bash_history
1012 set|grep HIST
1013 history
1014 set|grep HIST
1015 ll
1016 history
!! 表示上一个命令
!s 表示执行最近的s开头的命令 当前即1014号命令
!1013 执行历史编号的1013号命令

bash 环境配置及脚本的更多相关文章

  1. 第6天【egrep、bash环境配置及脚本、vim编辑器】

    bash环境配置及脚本(02)_recv bash环境配置及脚本(02)_recv bash环境配置文件: 按生效范围划分,存在两类: 全局配置: /etc/profile /etc/bashrc 个 ...

  2. PHP_环境配置_python脚本_2017

    Apache配置 需要安装:VC2015 httpd-2.4.16-win32-VC14.zip VC14就是2015的环境. 又比如:php-5.6.12-Win32-VC11-x86 VC11就是 ...

  3. source 命令的用法,是在当前bash环境下执行脚本文件

    原文: http://www.cnblogs.com/softwaretesting/archive/2012/02/13/2349550.html source命令用法: source FileNa ...

  4. 学习bash——环境配置

    一.环境配置文件的重要性 Bash在启动时直接读取这些配置文件,以规划好bash的操作环境. 即使注销bash,我们的设置仍然保存. 二.login shell 通过完整的登录流程取得的bash,称为 ...

  5. shell 脚本实战笔记(6)--集群环境配置检测

    1). 背景: 集群部署的时候, 需要一致的配置和环境设置. 对于虚拟机集群, 可以借助镜像拷贝, 复制和还原集群机器. 对与物理机集群而言, 则不一样, 如果机器一多, 多人去操作和配置, 对于成熟 ...

  6. [PY3]——环境配置(1)——pyenv | pip | ipython | jupyter(含安装pyenv环境shell脚本)

    1.关于pyenv (1)pyenv是一个开源的.shell脚本编写的工具:Simple Python version management (2)为什么使用pyenv:当多个项目同时在开发与维护时, ...

  7. 20181225-Linux Shell Bash环境下自动化创建ssh互信脚本

    20181225-Linux Shell Bash环境下自动化创建ssh互信脚本 1. 我的Blog 博客园 https://www.cnblogs.com/piggybaba/ 个人网站 http: ...

  8. 服务端测试环境hosts配置检查脚本

    [本文出自天外归云的博客园] 问题 由于A测试环境和B测试环境相互耦合,B测试环境切换导致我方测试环境需要更改后台服务器的响应配置.若多台服务器中有一台服务器没有更改配置,则在测试过程中将会出现问题. ...

  9. 基于VMware的eCos环境编译redboot(脚本配置redboot)

    基于VMware的ecos,redboot及hello world(1)安装请参照[[ecos学习2]wmware运行redboot[方法二]--图形实现配置 ] (2)修改内存布局文件:~/i386 ...

随机推荐

  1. 数据结构与算法JavaScript描述——栈的使用

    有一些问题特别适合用栈来解决.本节就介绍几个这样的例子.   1) 数制间的相互转换 可以利用栈将一个数字从一种数制转换成另一种数制.假设想将数字n 转换为以b 为基数的数字,实现转换的算法如下. 使 ...

  2. Ubuntu12.10下Python(cx_Oracle)访问Oracle解决方案

    第一步:下载安装cx_Oracle 下载地址:http://sourceforge.net/projects/cx-oracle/files/5.1.2/,下载cx_Oracle的rmp安装文件,注意 ...

  3. 6 istio 配置 grafana

    1 验证prometheus  service 已经运行: $ kubectl -n istio-system get svc prometheus NAME CLUSTER-IP EXTERNAL- ...

  4. msyqld 的 The user specified as a definer ('root'@'%') does not exist 问题

    msyqld 的 The user specified as a definer ('root'@'%') does not exist 问题 造成问题:搭建网站时显示内容不完整. 跟踪tomcat日 ...

  5. cisco 三层交换机通信

    前言 之前学了交换机和路由器今次学三层交换机的通信. 正文 准备:cisco模拟器 一台三层交换机 两台PC 配置命令如下 enable config t vlan 10 exit vlan 20 e ...

  6. 用嵌套List实现DataGrid的主从表显示

    //首先构造嵌套List,也就是一个list在另一个list中充当成员//如:referModels 在res中充当成员var res = totalAffectedMedels.Select(c = ...

  7. Asp.Net 自定义 httpmodel 中间件 管道

    https://msdn.microsoft.com/en-us/library/aa719858(v=vs.71).aspx http://www.cnblogs.com/jimmyzhang/ar ...

  8. 聊聊flutter的UI布局

    UI布局多半是套路,熟悉套路的规则. Flutter的UI布局也有一套规则 center center可以让任何元素在屏幕中居中,既是水平居中又是垂直居中,如果想让元素从上而下排列要怎么办呢?那就得使 ...

  9. Linux 登陆提示文字

    /etc/issue是从本地登陆显示的信息 /etc/issue.net是从网络登陆显示的信息 /etc/motd内容由系统管理员确定,常用于通告信息,如计划关机时间的警告等 每次用户登录时,/etc ...

  10. java 蓝桥杯算法提高 字串统计

    思路:这道题用HashMap来保存枚举的字串,key值保存字串-value值保存字串所出现的次数:         通过for循环并使用subString()方法枚举所有符合要求的子串maxStr记录 ...