`

bash环境变量配置

 
阅读更多

 

reference document

《鸟哥的Linux私房菜》

 

login 与 non-login shell

在开始介绍 bash 的配置文件前,我们一定要先知道的就是 login shell 与 non-login shell! 重点在于有没有登入 (login) 啦!
 login shell:取得 bash 时需要完整的登入流程的,就称为 login shell。举例来说,你要由 tty1 ~ tty6 登入,需要输入用户的账号与密码,此时取得的 bash 就称为『 login shell 』啰;
 non-login shell:取得 bash 接口的方法不需要重复登入的举动,举例来说,(1)你以 X window 登入 Linux 后, 再以 X 的图形化接口启动终端机,此时那个终端接口并没有需要再次的输入账号与密码,那个 bash 的环境就称为 non-login shell了。

 

为什么要介绍 login, non-login shell 呢?这是因为这两个取得 bash 的情况中,读取得配置文件数据并不一样所致。 由亍我们需要登入系统,所以先谈谈 login shell 会读取哪些配置文件?一般来说,login shell 其实只会读取这两个配置文件:

 

Login Shell:
1. /etc/profile:这是系统整体的设定,你最好不要修改这个档案;
2. ~/.bash_profile 或 ~/.login 或 ~/.profile:属于使用者个人设定,你要改自己的数据,就写入这里!

 

non-login shell  该 bash 配置文件仅会读取 ~/.bashrc 而已

 

 

Bash 环境变量解释

1. HOME

代表用户的主目录。还记得我们可以使用 cd ~ 去到自己的主目录吗?或者利用 cd 就可以直接回到用户主目录了。那就是取用这个变量啦~ 有很多多程序都可能会取用到这个变量的值!

 

2. SHELL

告知我们,目前这个环境使用的 SHELL 是哪支程序? Linux 预设使用 /bin/bash

 

3. HISTSIZE

这个与『历史命令』有关,亦即是, 我们曾经下达过的指令可以被系统记录下来,而记录的『笔数』则是由这个值来设定的。

 

4. MAIL
当我们使用 mail 这个指令在收信时,系统会去读取的邮件信箱档案 (mailbox)。

 

5. PATH
就是执行文件搜寻的路径 ~目录与目录中间以冒号(:)分隔, 由亍档案的搜寻是依序由 PATH 的发量内的目录来查询,所以,目录的顺序也是重要的哦。

 

6. LANG

这个重要!就是语系数据

 

7. RANDOM

这个玩意儿就是『随机随机数』癿变量!目前大多数的 distributions 都会有随机数生成器,那就是 /dev/random 这个档案。 我们可以透过这个随机数档案相关的变量($RANDOM) 来随机取得随机数值

 

8. PS1

提示符的设定

\d :可显示出『星期 月 日』癿日期格式,如:"Mon Feb 2"
\H :完整的主机名。举例来说,鸟哥的练习机为『www.vbird.tsai
\h :仅取主机名在第一个小数点之前的名字,如鸟哥主机则为『www』后面省略
\t :显示时间,为 24 小时格式的『HH:MM:SS』
\T :显示时间,为 12 小时格式的『HH:MM:SS』
\A :显示时间,为 24 小时格式的『HH:MM』
\@ :显示时间,为 12 小时格式的『am/pm』样式
\u :目前使用者的账号名称,如『root』;

\v :BASH 的版本信息,如鸟哥的测试主板本为 3.2.25(1),仅取『3.2』显示
\w :完整的工作目录名称,由根目录写起的目录名称。但家目录会以 ~ 取代;
\W :利用 basename 凼数取得工作目录名称,所以仅会列出最后一个目录名。
\# :下达的第几个指令。
\$ :提示字符,如果是 root 时,提示字符为 # ,否则就是 $

case $TERM in
    xterm*)
        PS1='${LOGNAME}@${HOSTNAME}: ${PWD}^G${LOGNAME}@${HOSTNAME} !${who}'
        ;;
    *)
          PS1='\u@${HOSTNAME}: \w$'         ;;
esac

 

 

 

===================special environments vars===============

9.  $

(关于本 shell 的 PID)

PID (Process ID)

 

e.g.  echo $$

 

====================================================

10. ?

(关于上个执行指令的回传值)

e.g.  echo $?

 

在 bash 里面这个变量可重要的很! 这个变数是:『上一个执行的指令所回传的值』, 上面这句话的重点是『上一个指令』不『回传值』两个地方。当我们执行某些指令时, 这些指令都会回传一个执行后的代码。一般来说,如果成功的执行该挃令, 则会回传一个 0 值,如果执行过程发生错误,就会回传『错误代码』才对!一般就是以非为 0 的数值来取代。

 

 

11. OSTYPE, HOSTTYPE, MACHTYPE

主机硬件与核心的等级

 

 

 

 

 

 

 

使Bash更好地为我们服务,我们需定制bash shell环境,这里讲述bash用户环境配置

 

bash_profile、.bashrc、和.bash_logout
上面这三个文件是bash shell的用户环境配置文件,位于用户的主目录下。其中.bash_profile是最重要的一个配置文件,它在用户每次登录系统时被读取,里面的所有命令都会被bash执行。.profile(由Bourne Shell和Korn Shell使用)和.login(由C Shell使用)两个文件是.bash_profile的同义词,目的是为了兼容其它Shell。在Debian中使用.profile文件代替.bash_profile文件

 

.bashrc文件会在bash shell调用另一个bash shell时读取,也就是在shell中再键入bash命令启动一个新shell时就会去读该文件。这样可有效分离登录和子shell所需的环境。但一般来说都会在.bash_profile里调用.bashrc脚本以便统一配置用户环境。

 

.bash_logout在退出shell时被读取。所以我们可把一些清理工作的命令放到这文件中。

 

在/etc目录的bash.bashrc和profile是系统级(全局)的配置文件,当在用户主目录下找不到.bash_profile和.bashrc\时,就会读取这两个文件。.bash_history是bash shell的历史记录文件,里面记录了你在bash shell中输入的所有命令。可通过HISSIZE环境变量设置在历史记录文件里保存记录的条数。alias l = ‘ls -l’是设置别名的语句,把它放在这些配置文档中就可使我们能用简单的’l'命令,代替’ls -l’命令。

 

 
当我们修改了这些配置件后,可用source .bash_profile命令使它修改内容马上生效。

 

 选项
bash shell中的选项可控制shell的行为和功能,我们可以通过shopt命令来设置。使用set命令也可以,但它已被shopt替代,但为了向下兼容,set命令还是可以使用的。使用不带参数的shopt命令可以列出当前shell中只能由shopt设置的选项,用shopt -o可列出可由set命令设置的选项。

 

下面是一些可由set命令基本的选项,默认是关闭的。

 

emacs                  进入emacs编辑模式
vi                     进入vi编辑模式
ignoreeof              不允许单独使用Ctrl_D退出的用法,要使用exit。与IGNOREEOF=10等价
noclobber              不允许重定向覆盖已存在文件
noglob                 不允许扩展文件名通配符
nounset                使用未定义的变量时给出错误
下面是一些只能由shopt命令设置的选项。

 

cdspell          自动改正cd命令参数中的小错误
hostcomplete     以@开头时,按tab键可进行主机名的自动完成
dotgblob         以点开始的文件名被包含在路径名扩展中
mailwarn         显示邮件警告信息
shopt命令的选项如下:

 

-p          显示可设置选项及当前取值
-s          设置每一选项为on
-u          设置每一选项为off
-q          不输出信息
-o        

分享到:
评论

相关推荐

    Linux中Bash环境变量的配置方法

    以下是几种shell版本,bash是默认的: sh(全称 Bourne Shell): 是UNIX最初使用的 shell,而且在每种 UNIX 上都可以使用。 Bourne Shell 在 shell 编程方面相当优秀,但在处理与用户的交互方面做得不如其他几种 ...

    JMeter在Linux系统中的环境变量配置

    下载:  在线下载jmeter(或者本地上传): ...  拷贝到安装目录并解压:  $ cp apache-jmeter-3.1.tgz /usr/local/...  环境变量配置  为指定用户配置环境变量,是通过用户目录下的用户配置文件{.bash_profile}

    linux-Shell基础视频教程

    10.3.1 Shell基础-Bash基本功能-历史命令与补全.mp4 10.3.2 Shell基础-Bash基本功能-别名与快捷键.mp4 10.3.3 Shell基础-Bash基本功能-输入输出...10.6.3 Shell基础-环境变量配置文件-其他配置文件和登录信息.mp4

    maven for mac 环境变量配置

    1.生成文件:touch ~/base_profile 2.修改文件加入以下内容: ... -bash: /usr/local/maven/apache-maven-3.5.4/bin/mvn: Permission denied 则使用命令 chmod a+x /usr/local/maven/apache-maven-3.5.4/bin/mvn

    Linux下环境变量配置方法小结(.bash_profile和.bashrc的区别)

    主要介绍了Linux下环境变量配置方法小结(.bash_profile和.bashrc的区别),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

    CentOS中环境变量与配置文件的深入讲解

    CentOS的环境变量配置文件体系是一个层级体系,这与其他多用户应用系统配置文件是类似的,有全局的,有用户的,有shell的,另外不同层级有时类似继承关系。 本文将详细介绍关于CentOS环境变量与配置文件的相关内容,...

    Linux中环境变量配置的步骤详解

    我们大家在平时使用Linux的时候,经常需要配置一些环境变量,这时候一般都是网上随便搜搜就有人介绍经验的。不过问题在于他们的方法各不相同,有人说配置在/etc/profile里,有人说配置在/etc/environment,有人说...

    自定义添加linux系统java环境变量脚本及安装包

    各位小伙伴肯定都遇到过拿到一个linux环境发现没有java环境,又需要屁颠屁颠跑去找java安装包配置环境变量的问题吧? 本资源为二狗自己编写的快速定义java环境变量的脚本,可以帮助你剩下不少时间,操作前建议备份/...

    Linux 环境变量详解及实例

    Linux环境变量 ~/.bash_profile && ~/.bashrc 用户登陆Linux操作系统的时候,”/etc/profile”, “~/.bash_profile”等配置文件会被自动执行。 执行过程是这样的: 登陆Linux系统时,首先启动”/etc/profile”,...

    Linux 中环境变量设置.docx

    默认情况下,其他设置的一些环境变量,执行用户的 .bashrc 文件。  ~/.bashrc: 该文件包含专用于登陆用户的 bash shell 的 bash 信息,当登录时以及每次打开新的 shell 时,该该文件被读取。  ~/.bash_logout: 当...

    解决 Mac和Idea 终端关闭后,环境变量失效,每次都需source ~/.bash_profile 问题

    最近使用mac系统后,每次在~/.bash_profile 配置了mvn 等环境变量后,使用 source后 环境变量生效,但是当终端退出后,环境变量就失效。 zsh: command not found: mvn mac 每次启动终端都会加载当前用户下的.zshrc...

    Mac 将mysql路径加入环境变量的方法

    会在TextEdit中打开这个文件(如果以前没有配置过环境变量,那么这应该是一个空白文档)。如果有内容,请在结束符前输入,如果没有内容,请直接输入如下语句: export PATH=${PATH}:/usr/local/mysql/bin 然后,保存...

    MAC 系统安装java并配置环境变量

    MAC 配置 java 环境变量 1.列出所有Java版本信息 /usr/libexec/java_home -V 2.修改.bash_profile文件 cd ~ touch .bash_profile vi .bash_profile 3.配置JDK环境变量内容,并输入wq保存 export JAVA_HOME=/...

    Linux安装oracle 11G各系统变量配置脚本

    用root身份执行该脚本,实现对limits.conf,login,sysctl.conf,profile,.bash_profile文件进行设置,并创建用户oracle,创建oinstall和dba组,创建安装目录 执行脚本命令 ./path.ksh 密码(oracle用户的密码) ...

    bash shell 基础编程语法

    bash shell 的基础语法介绍。 1.bash的环境配置和配置文件介绍 2.bash的通配符,参数,变量,表达式,函数,正则表达式

    bash.env:Bash.env是一个级联的Bash环境系统,适用于在不同硬件和操作系统环境下工作的人员。 与oh-my-zsh相似,但适用于Bash,并为在远程计算机上使用“ ssh”的用户提供特殊的调味料

    Bash.env 版本:1.0.1 Bash.env是一个级联的Bash环境系统。 它为Bash高级用户提供了Bash shell提示主题,方便的功能,别名和工具。 Z-shell很棒,但是在大多数操作系统上并不是标准的。 在您没有管理权限的环境中,...

    Bash使用 (很详细的讲解)

    Bash使用 命令补齐相关 常用的快捷键 编程相关 变量 参 数 函数 操作符 条件测试和流程控制 算术运算 输入和输出重定向 ... 配置文件 bash的调试器选项 ... 环境变量 其他

    Linux下设置环境变量各配置文件的区别

    /etc/profile:此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被...默认情况下,他设置一些环境变量,执行用户的.bashrc文件.  ~/.bashrc:该文件包含专用于你的bash shell的bash信息,当登录时以及

Global site tag (gtag.js) - Google Analytics