bash 初探与PATH 详解

1.认识bash这个shell


        在/etc/shells里面记录有本机提供的shell,这些shell本身是二进制可执行文件。而/etc/passwd可以查找固定用户对应的启动进入的shell,使用type可以查看bash命令的别名等信息,使用alias可以进行命令的别名。


1.1shell变量功能


1.1.1变量的设置规则

    1)变量用=赋值(在终端中赋值的变量会在终端重启后消失!!!,因为这个进程结束了

    2)等号两边不能直接用空格符,若有空格需要用单引号或者双引号

双引号内的字符保持原有的特性:“$pwd”表示当前路径

单引号内的字符为一般字符,用以保护空格和特殊字符避免受到shell的特殊解释 :

    3)可使用转意字符/将特殊字符转换成一般字符

    4)在一串命令中,还需要调用其他命令提供信息,可以使用反单引号~或者$

Eg:version=$(uname-r) then echo $version

    5)为了增加变量内容,则可以使用$name累加内容

EgPATH=”$PATH”:/home/bin

    6)该变量需要其他子进程执行,需要用export来使变量变成环境变量

    7)大写为系统变量,小写为用户变量

    8)使用unset取消变量

使用PATH=$PATH:/home/bin

PATH=”$PATH”:/home/bin

PATH=${PATH}:/home/bin

效果是一样的,但最后一个最好


1.1.2环境变量的功能:

注意:自定义变量就是set命令所显示的变量仅仅在当前进程可用,即使在子进程也不可以。而环境变量是可以在子进程使用的。


1.2命令别名与历史变量

1.2.1命令别名设置:aliasunalias

注意alias在终端中直接设定是保存在内存之中的,不会写入到文件;所以打开另外一个终端并不会生效.


1.3bashshell的操作环境


1.3.1路径与命令查找顺序

命令的查找执行顺序:

    1)以相对、绝对路径来执行命令:例如“/bin/ls”或者“./ls”(定向执行命令)

    2)alias找到该命令来执行(保证名可以执行别名)

    3)bash内置的(builtin)命令来执行

    4)通过$PATH这个变量的顺序找到第一个命令来执行

通过type可以查找某个命令具体是来自于哪个地方,通过type–a可以查找该命令的执行顺序。


1.3.2bash的登录与欢迎信息:/etc/issue,/etc/issue.net,/etc/motd


1.3.3bash的环境配置文件

    所有的配置要在写入配置文件以后,才能够保存在下一次使用。

    Loginnon-loginshell

    Loginshell会读取的两个配置文件:

   (1/etc/profile:系统整体设置,最好不要修改,它会根据用户id决定不同的配置

   (2~/.bash_profile~/.Bash_login或者~/.profile:属于个人设置

  • /etc/profile(loginshell才会读取)

该文件设置的变量主要有:PATH/MAIL/USER/HOSTNAME/HISTSIZE

    调用的外部数据有:

  • /etc/inputrc

  • /etc/profile.d/*.sh

Bash操作接口的颜色,语系、llls命令的别名、vi的命令别名、which的命令别名等。如果你需要帮所有用户设置一些共享的命令别名时,可以在这个目录下创建拓展名为.sh的文件,并将所需要的数据写入即可

  • /etc/sysconfig/i18n

  • ~/.bash_profile(loginshell才读取)

        Bash在读完整体配置以后,会依次读取个人配置:~/.bash_profile ~/.bash_login ~/.profile(这三个文件只会读取一个,就前原则)

下面是loginshell的配置文件读取流程:


  • ~/.bashrcnon-loginshell会读取)

  • 其他相关配置文件

/etc/man.config:主要是MANPATH这个变量,~/.bash_history~/.bash_logout


注意:每次重新打开终端的时候,.bashrc会自动执行一次,而.bash_profile不会。因为~/.bash_profile 是交互式、login 方式进入 bash 运行的
~/.bashrc 是交互式 non-login 方式进入 bash 运行的


2.PATH详解


        从第一部分中,我们已经知道bash配置文件的读取流程是/etc/profile---->~/.bash_profle(~/.bash_login)(~/.profile)。如果需要设置对全体用户都可用的path,我们可以在/etc/profile中设置,反之,在后面三个文件中设置。设置完成后,重新启动终端或者直接source .filename就可以使用了。


你可能感兴趣的:(bash,环境变量,Path)