`

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        

分享到:
评论

相关推荐

    Java 环境变量配置

    ### Java环境变量配置详解 在计算机编程领域,Java作为一种广泛使用的高级编程语言,其环境配置对于初学者乃至资深开发者都至关重要。正确的环境变量配置能够确保Java应用程序顺利运行,并且为开发人员提供良好的...

    jdk安装和环境变量配置.zip

    **Java Development Kit (JDK) 安装与环境变量配置详解** 在计算机编程领域,Java是一种广泛应用的编程语言,而JDK(Java Development Kit)是Java编程的基础,它包含了编译、运行Java程序所需的各种工具和Java运行...

    java环境变量配置 JDK环境变量

    ### Java环境变量配置详解 #### 一、Java环境变量配置的重要性 在开发Java应用程序之前,首先需要正确地配置Java环境变量。这是因为环境变量是操作系统用来识别和定位Java开发工具的位置的关键参数。通过设置适当的...

    java的环境变量配置

    Java的环境变量配置是每个Java开发者必须掌握的基本技能,尤其对于初学者来说,理解并正确设置这些变量至关重要。本文将详细讲解如何配置Java环境变量,包括JDK的安装、环境变量的作用、具体配置步骤以及常见问题的...

    jdk环境变量配置jdk环境变量配置jdk环境变量配置

    如果能正确显示Java版本信息,那就意味着环境变量配置成功了。 在实际开发中,有时候还需要配置`JRE_HOME`,但现代JDK通常包含JRE,因此大多数情况下不需要单独配置。如果需要配置`JRE_HOME`,其步骤与配置`JAVA_...

    Bash特殊变量讲解

    ### Bash特殊变量详解 在Bash脚本编程中,特殊变量是极其重要的组成部分,它们能够帮助开发者更好地控制脚本的行为并提升程序的灵活性。本文将详细介绍Bash中的特殊变量及其用法,帮助读者深入理解这些变量如何在...

    JAVA 环境变量配置

    使用IntelliJ IDEA, Eclipse等集成开发环境时,它们通常会自动处理环境变量配置,但如果你在命令行环境下运行Java程序,还是需要手动配置。 总的来说,配置Java环境变量是每个Java开发者必须掌握的基本技能。理解...

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

    在进行环境变量配置时,需要注意的是,不同的Shell启动方式(登录与非登录)会导致加载不同的配置文件。登录Shell(如直接登录或`su -l`切换用户)会读取`~/.bash_profile`,而非登录Shell(如打开新的终端窗口)则...

    linux jdk mycat环境变量配置.txt

    ### Linux下JDK与Mycat环境变量配置详解 在Linux环境下进行开发或部署时,正确配置JDK(Java Development Kit)与Mycat数据库中间件的环境变量是非常重要的步骤。这不仅能够确保应用程序顺利运行,还能提高系统的...

    jdk1.8及环境变量配置

    环境变量配置是使用JDK进行Java开发的必要步骤,主要涉及到三个关键的环境变量:JAVA_HOME、PATH和CLASSPATH。 1. **JAVA_HOME**: JAVA_HOME变量指向JDK的安装目录,它告诉系统JDK在哪里。例如,如果JDK安装在`C:...

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

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

    CDT和JDT环境变量配置

    本文将详细阐述CDT和JDT的环境变量配置过程。 首先,我们来了解环境变量的基本概念。环境变量是操作系统中用于存储信息的一系列变量,这些变量可以帮助程序找到所需的资源,如库文件、编译器路径等。在CDT和JDT中,...

    java环境变量配置详细步骤

    Java环境变量配置是每个Java开发者必须掌握的基本技能,尤其对于初学者来说,理解并正确配置这些变量至关重要。本文将详细阐述Java环境变量配置的步骤,帮助初学者快速上手。 首先,我们需要了解Java的三个主要环境...

    Linux配置JDK环境变量

    对于Java开发者来说,正确的环境变量配置是必不可少的,因为这使得系统能够识别并运行Java应用程序和工具。 通过以上步骤,您可以成功地在Linux系统上安装和配置JDK环境变量,为开发Java应用程序提供必要的环境支持...

    java环境变量配置

    ### Java环境变量配置详解 #### 一、Java环境变量配置的重要性 在开发Java应用程序之前,首先需要正确配置Java环境变量。这是因为操作系统通过环境变量来识别Java的安装位置以及相关的类库路径,从而确保能够顺利地...

    09-Java语言(环境变量配置-临时配置方式)

    本主题将专注于Java环境变量配置的临时设置方法。 首先,我们需要了解Java的两个关键环境变量:`JAVA_HOME`和`PATH`。`JAVA_HOME`变量指向Java安装目录,而`PATH`变量则包含Java可执行文件(如`java.exe`、`javac....

    Linux中环境变量配置文件详解.docx

    以下是对Linux中环境变量配置文件的详细解释: **系统级环境变量配置** 1. **/etc/profile**:这是系统级的全局环境变量配置文件,当任何用户首次登录系统时,这个文件会被执行。它通常用来设置适用于所有用户的...

    Tony老师聊shell—环境变量配置文件

    ### Tony老师聊shell—环境变量配置文件 在深入探讨shell中的环境变量配置文件之前,我们首先需要理解几个基本概念:shell、环境变量以及配置文件。接下来,本文将围绕这几个核心概念展开,详细介绍环境变量配置...

    Java环境变量配置.doc

    Java环境变量配置是Java开发和运行的基础,它主要包括两个关键的环境变量:Path和CLASSPATH。这些变量在操作系统中定义了Java开发工具(JDK)的位置以及类库的搜索路径,对于确保Java程序能够正确执行至关重要。 1. *...

Global site tag (gtag.js) - Google Analytics