龙空技术网

环境变量功能大全,程序员必备!

剑指天涯 228

前言:

此时姐妹们对“centos文件名中文问号”都比较珍视,咱们都需要分析一些“centos文件名中文问号”的相关内容。那么小编也在网摘上汇集了一些有关“centos文件名中文问号””的相关资讯,希望兄弟们能喜欢,看官们快快来了解一下吧!

环境变量的功能

环境变量可以帮我们达到很多功能~包括家目录的变换啊、提示字符的显示啊、运行文件搜寻的路径啊等等的, 还有很多很多啦!那么,既然环境变量有那么多的功能,问一下,目前我的 shell 环境中, 有多少默认的环境变量啊?我们可以利用两个命令来查阅,分别是 env 与 export 呢!

env 是 environment (环境) 的简写啊,上面的例子当中,是列出来所有的环境变量。当然,如果使用 export 也会是一样的内容~ 只不过, export 还有其他额外的功能就是了,我们等一下再提这个 export 命令。 那么上面这些变量有些什么功用呢?

底下我们就一个一个来分析分析!

HOME

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

SHELL

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

HISTSIZE

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

MAIL

当我们使用 mail 这个命令在收信时,系统会去读取的邮件信箱文件 (mailbox)。

PATH

就是运行文件搜寻的路径啦~目录与目录中间以冒号(:)分隔, 由于文件的搜寻是依序由 PATH 的变量内的目录来查询,所以,目录的顺序也是重要的喔。

LANG

这个重要!就是语系数据啰~很多信息都会用到他, 举例来说,当我们在启动某些 perl 的程序语言文件时,他会主动的去分析语系数据文件, 如果发现有他无法解析的编码语系,可能会产生错误喔!一般来说,我们中文编码通常是 zh_TW.Big5 或者是 zh_TW.UTF-8,这两个编码偏偏不容易被解译出来,所以,有的时候,可能需要修订一下语系数据。 这部分我们会在下个小节做介绍的!

RANDOM

这个玩意儿就是『随机随机数』的变量啦!目前大多数的 distributions 都会有随机数生成器,那就是 /dev/random 这个文件。 我们可以透过这个随机数文件相关的变量 ($RANDOM) 来随机取得随机数值喔。在 BASH 的环境下,这个 RANDOM 变量的内容,介于 0~32767 之间,所以,你只要 echo $RANDOM 时,系统就会主动的随机取出一个介于 0~32767 的数值。万一我想要使用 0~9 之间的数值呢?呵呵~利用 declare 宣告数值类型, 然后这样做就可以了:

[root@www ~]# declare -i number=$RANDOM*10/32768 ; echo $number8 <== 此时会随机取出 0~9 之间的数值喔!

大致上是有这些环境变量啦~里面有些比较重要的参数,在底下我们都会另外进行一些说明的~

用 set 观察所有变量 (含环境变量与自定义变量)

bash 可不只有环境变量喔,还有一些与 bash 操作接口有关的变量,以及用户自己定义的变量存在的。 那么这些变量如何观察呢?这个时候就得要使用 set 这个命令了。 set 除了环境变量之外, 还会将其他在 bash 内的变量通通显示出来哩!信息很多,底下仅列出几个重要的内容:

一般来说,不论是否为环境变量,只要跟我们目前这个 shell 的操作接口有关的变量, 通常都会被配置为大写字符,也就是说,『基本上,在 Linux 默认的情况中,使用{大写的字母}来配置的变量一般为系统内定需要的变量』。 OK!OK!那么上头那些变量当中,有哪些是比较重要的?大概有这几个吧!

PS1:(提示字符的配置)

这是 PS1 (数字的 1 不是英文字母),这个东西就是我们的『命令提示字符』喔! 当我们每次按下 [Enter] 按键去运行某个命令后,最后要再次出现提示字符时, 就会主动去读取这个变量值了。上头 PS1 内显示的是一些特殊符号,这些特殊符号可以显示不同的信息, 每个 distributions 的 bash 默认的 PS1 变量内容可能有些许的差异,不要紧,『习惯你自己的习惯』就好了。 你可以用 man bash (注3)去查询一下 PS1 的相关说明,以理解底下的一些符号意义。

好了,让我们来看看 CentOS 默认的 PS1 内容吧:『[\u@\h \W]\$ 』,现在你知道那些反斜杠后的数据意义了吧? 要注意喔!那个反斜杠后的数据为 PS1 的特殊功能,与 bash 的变量配置没关系啦!不要搞混了喔! 那你现在知道为何你的命令提示字符是:『 [root@www ~]# 』了吧? 好了,那么假设我想要有类似底下的提示字符:

[root@www /home/dmtsai 16:50 #12]#

那个 # 代表第 12 次下达的命令。那么应该如何配置 PS1 呢?可以这样啊:

[root@www ~ ]# cd /home[root@www home]# PS1='[\u@\h \w \A #\#]\$ '[root@www /home 17:02 #85]## 看到了吗?提示字符变了!变的很有趣吧!其中,那个 #85 比较有趣,# 如果您再随便输入几次 ls 后,该数字就会添加喔!为啥?上面有说明滴!

\d :可显示出『星期 月 日』的日期格式,如:"Mon Feb 2"

\H :完整的主机名。

\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 时,提示字符为 # ,否则就是 $ 啰~

$:(关于本 shell 的 PID)

钱字号本身也是个变量喔!这个咚咚代表的是『目前这个 Shell 的线程代号』,亦即是所谓的 PID (Process ID)。 更多的程序观念,我们会在第四篇的时候提及。想要知道我们的 shell 的 PID ,就可以用:『 echo $$ 』即可!出现的数字就是你的 PID 号码。

?:(关于上个运行命令的回传值)

什么?问号也是一个特殊的变量?没错!在 bash 里面这个变量可重要的很! 这个变量是:『上一个运行的命令所回传的值』, 上面这句话的重点是『上一个命令』与『回传值』两个地方。当我们运行某些命令时, 这些命令都会回传一个运行后的代码。一般来说,如果成功的运行该命令, 则会回传一个 0 值,如果运行过程发生错误,就会回传『错误代码』才对!一般就是以非为 0 的数值来取代。 我们以底下的例子来看看:

OSTYPE, HOSTTYPE, MACHTYPE:(主机硬件与核心的等级)

我们在第零章、计算器概论内的 CPU 等级说明中谈过 CPU , 目前个人计算机的 CPU 主要分为 32/64 位,其中 32 位又可分为 i386, i586, i686,而 64 位则称为 x86_64。 由于不同等级的 CPU 命令集不太相同,因此你的软件可能会针对某些 CPU 进行优化,以求取较佳的软件性能。 所以软件就有 i386, i686 及 x86_64 之分。以目前 (2009) 的主流硬件来说,几乎都是 x86_64 的天下! 但是毕竟旧机器还是非常多,以鸟哥的环境来说,我用 P-III 等级的计算机,所以上头就发现我的等级是 i686 啦!

要留意的是,较高阶的硬件通常会向下兼容旧有的软件,但较高阶的软件可能无法在旧机器上面安装! 我们在第三章就曾说明过, 这里再强调一次,你可以在 x86_64 的硬件上安装 i386 的 Linux 操作系统,但是你无法在 i686 的硬件上安装 x86_64 的 Linux 操作系统!这点得要牢记在心!

标签: #centos文件名中文问号