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        

猜你喜欢

转载自guoapeng.iteye.com/blog/1122938
今日推荐