📄 0320bash.htm
字号:
env 就可以知道啰!『<font color="#000066">基本上,在 Linux 预设的情况中,使用{大写的字母}来设定的变量一般为系统内定需要的变量</font>』,底下列出Linux 系统中 预设的变量内容:</ul></blockquote><blockquote><ul><hr width="100%"><li><a name="env"></a><b><font color="#000099">env</font></b></li><br><b><font color="#000099">显示目前系统中主要的预设变量内容</font></b><br><font color="#ff0000">语法</font>:<table bgcolor="#000000" border="1" cols="1" width="600"><tbody><tr><td><font size="-1" face="SimSun"><font color="#ffffff">[test @testtest]# </font><font color="#ffff00">env</font></font><br><font size="-1" face="SimSun"><font color="#ffffff">ENV=/root/.bashrc            </font><font color="#ff9900"><==使用者自订环境变量的设定档案</font></font><br><font size="-1" face="SimSun"><font color="#ffffff">HISTSIZE=1000                </font><font color="#ff9900"><==目前的指令记忆数量</font></font><br><font size="-1" face="SimSun"><font color="#ffffff">HOME=/home/test              </font><font color="#ff9900"><==登入者的家目录</font></font><br><font size="-1" face="SimSun"><font color="#ffffff">HOSTNAME=test.adsldns.org </font><font color="#ff9900"><==这部主机的主机名称</font></font><br><font size="-1" face="SimSun"><font color="#ffffff">HOSTTYPE=i386             </font><font color="#ff9900"><==这部主机的硬件等级大致状态(i386, i686..)</font></font><br><font size="-1" face="SimSun"><font color="#ffffff">INPUTRC=/etc/inputrc         </font><font color="#ff9900"><==一些 shell 加载的数据文件设定处</font></font><br><font size="-1" face="SimSun"><font color="#ffffff">LANGUAGE=C                   </font><font color="#ff9900"><==预设语系的资料</font></font><br><font size="-1" color="#ffffff" face="SimSun">LANG=zh_TW.Big5 </font><br><font size="-1" color="#ff9900" face="SimSun">与 LANGUAGE类似,这个则是各个 linux distribution 常用的预设语系变量,由于我的 Mandrake使用中文安装,所以预设语系是中文,亦即 zh_TW.Big5 ,如果我要修改这个变量,可以到/etc/sysconfig/i18n 去修改!底下的 LC_xxx 均是与预设的表示语系有关的变量,其中比较有趣的是LC_TIME ,如果在文字接口下,最好将 LC_TIME 改成美规日期的显示方式,才不会有乱码!</font><br><font size="-1" color="#ffffff" face="SimSun">LC_COLLATE=zh_TW.Big5</font><br><font size="-1" color="#ffffff" face="SimSun">LC_CTYPE=zh_TW.Big5</font><br><font size="-1" color="#ffffff" face="SimSun">LC_MESSAGES=zh_TW.Big5</font><br><font size="-1" color="#ffffff" face="SimSun">LC_MONETARY=zh_TW.Big5</font><br><font size="-1" color="#ffffff" face="SimSun">LC_NUMERIC=zh_TW.Big5</font><br><font size="-1" color="#ffffff" face="SimSun">LC_TIME=en</font><br><font size="-1" face="SimSun"><font color="#ffffff">LESSOPEN=|/usr/bin/lesspipe.sh%s </font><font color="#ff9900"><==用来设定 less 使用的一支 script 档案</font></font><br><font size="-1" face="SimSun"><font color="#ffffff">LOGNAME=test                 </font><font color="#ff9900"><==登入者的账号</font></font><p><font size="-1" color="#ffffff" face="SimSun">MACHTYPE=i586-mandrake-linux-gnu </font><br><font size="-1" color="#ff9900" face="SimSun">主机的硬件配备等级i586 为 P MMX 等级,至于 K7 及 PIII 之后的,就是 i686 等级啰!</font></p><p><font size="-1" face="SimSun"><font color="#ffffff">MAIL=/var/spool/mail/test    </font><font color="#ff9900"><==登入者的邮件预设放置地点</font></font><br><font size="-1" face="SimSun"><font color="#ffffff">OSTYPE=linux-gnu             </font><font color="#ff9900"><==操作系统的形式(linux-gnu)</font></font><br><font size="-1" color="#ffffff" face="SimSun">PATH=/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/home/test/bin</font><br><font size="-1" face="SimSun"><font color="#ffffff">PWD=/home/test               </font><font color="#ff9900"><==目前登入者所在的目录(当下的目录)</font></font><br><font size="-1" face="SimSun"><font color="#ffffff">SHELL=/bin/bash              </font><font color="#ff9900"><==登入者使用的 shell 类型</font></font><br><font size="-1" face="SimSun"><font color="#ffffff">USER=test                 </font><font color="#ff9900"><==目前这个登入者的使用者名称</font></font></p></td></tr></tbody></table><a href="#env">env</a> environment 的简写,所以说,这个指令主要在将目前系统中的主要变量读出来!但是,不是说我们还可以自订变量吗?因此,除了env 这个读取环境变量的指令之外,还有一个可以将目前系统中所有的变量数据都读出来的指令,称为<a href="#set">set</a>!set 除了会将上面的数据都给他读出来之外,还会有额外的这些信息也一起读入(通常都与使用者的设定有关!)<br> <br><hr width="100%"><li><a name="set"></a><b><font color="#000099">set</font></b></li><br><b><font color="#000099">显示目前系统中全部的变量内容</font></b><br><font color="#ff0000">语法</font>:<table bgcolor="#000000" border="1" cols="1" width="820"><tbody><tr><td><font size="-1" face="SimSun"><font color="#ffffff">[test @testtest]# </font><font color="#ffff00">set</font></font><br><font size="-1" face="SimSun"><font color="#ffffff">BASH=/bin/bash                        </font><font color="#ff9900"><==BASH 的主程序放置路径</font></font><br><font size="-1" face="SimSun"><font color="#ffffff">BASH_VERSINFO=([0]="2"[1]="05" [2]="8" [3]="1" [4]="release" [5]="i386-redhat-linux-gnu")</font><font color="#ff9900"><==BASH 版本信息</font></font><br><font size="-1" face="SimSun"><font color="#ffffff">BASH_VERSION=$'2.05.8(1)-release'    </font><font color="#ff9900"> <==BASH 的版本</font></font><br><font size="-1" face="SimSun"><font color="#ffffff">COLORS=/etc/DIR_COLORS                </font><font color="#ff9900"><==使用颜色</font></font><br><font size="-1" face="SimSun"><font color="#ffffff">COLUMNS=100                        </font><font color="#ff9900"><==目前这个终端机使用的字段有几个字符距离</font></font><br><font size="-1" face="SimSun"><font color="#ffffff">HISTFILE=/home/vbird/.bash_history </font><font color="#ff9900"><==目前用来存过往指令的档案,为一个隐藏档</font></font><br><font size="-1" face="SimSun"><font color="#ffffff">HISTFILESIZE=1000                  </font><font color="#ff9900"><==存起来的档案中,指令的最大数(只纪录1000 个指令)</font></font><br><font size="-1" face="SimSun"><font color="#ffffff">IFS=$' \t\n'                       </font><font color="#ff9900"><==预设的分隔符</font></font><br><font size="-1" face="SimSun"><font color="#ffffff">langfile=/home/vbird/.i18n            </font><font color="#ff9900"><==语系选择的档案</font></font><br><font size="-1" face="SimSun"><font color="#ffffff">LINES=40                              </font><font color="#ff9900"><==目前光标所在的位置为第几行</font></font><br><font size="-1" face="SimSun"><font color="#ffffff">MAILCHECK=60                         </font><font color="#ff9900"> <==每隔多久检查一次有无新信件(秒数)</font></font><br><font size="-1" face="SimSun"><font color="#ffffff">PPID=24572                            </font><font color="#ff9900"><==目前 bash 这个父程序的 ID !</font></font><br><font size="-1" face="SimSun"><font color="#ffffff">PROMPT_COMMAND=$'echo-ne "\\033]0;${USER}@${HOSTNAME%%.*}:${PWD/$HOME/~}\\007"'     </font><font color="#ff9900"><==提示字符显示的内容</font></font><br><font size="-1" color="#ffffff" face="SimSun">SHELLOPTS=braceexpand:hashall:histexpand:monitor:history:interactive-comments:emacs</font><br><font size="-1" face="SimSun"><font color="#ffffff">SUPPORTED=zh_TW.Big5:zh_TW:zh:en_US:en     </font><font color="#ff9900"><==支援的语系</font></font><br><font size="-1" face="SimSun"><font color="#ffffff">TERM=xterm                               </font><font color="#ffff00">  </font><font color="#ff9900"><==终端机形式</font></font><br><font size="-1" face="SimSun"><font color="#ffffff">UID=500                                </font><font color="#ff9900"><==登入者的使用者 ID (UID)</font></font><br><font size="-1" face="SimSun"><font color="#ffffff">$    </font><font color="#ffff00">                                     </font><font color="#ff9900"> <==目前 shell 的 PID </font></font><br><font size="-1" color="#ffffff" face="SimSun">? </font><br><font size="-1" color="#ff9900" face="SimSun">最后一个命令的回传值,若之前的命令被正确的执行会传回0 ,否则会传为 1 或其它错误代码。</font></td></tr></tbody></table>set 的输入就是直接输入 set 即可!他除了会显示出目前的『环境变量』之外,也会显示出您的『自订变量』呢!那么有哪些与使用者较有相关性的自订变量呢?我们上面仅列出部分常见的变量值啰!<br> <br>使用 set 除了会将系统的默认值秀出来之外,连带的所有的你自己设定的变量也会被秀出来!同时需要注意的是,若当时有相当多人同时在在线的话,那么你的变量只能给自己使用(除非改的是系统的预设参数档,如/etc/profile ),而不会干扰到别人的!就如同前面所说的,由于你登入 Linux之后会取得一个 PID ,而你的设定将只对这个 PID 与子程序有关!此外,<font color="#000099">这次登入所进行的变量设定,如果没有更动到设定档,那么这次设定的变量在下次登入时将被取消掉(因为程序PID 不见啰!)!所以啰,如果你想要你的变量每次都能在你登入的时候自动就设定好了,那么就必须将你的设定写入登入时加载的设定档</font>!<br> <br>上面的变量中,比较有趣的是 $ 与 ? 这两个咚咚,尤其是 ? 这个变量,如果您上一个命令执行的过程中没有错误,那么这个变量就会被设定为0 ,如果您的上个命令有错误讯息,那么这个变量会变成 1 或其它的错误代码!现在马上动手试看看您的上个指令执行成果为何?<br> <ul><font face="SimSun">echo $?</font><br> </ul><hr width="100%"><li><a name="rule"></a><b><font color="#000099">变量设定规则:</font></b></li><br>好了,我们知道了一些系统的预设变量了,但是如果是我自己想要设定一些我自己的变量,该如何设定呢?有什么规则需要遵守?呵呵!在说明之前,可能要来让大家了解一下为什么自己会想来设定变量?</ul></blockquote><ul><ul><b><font color="#000066">我的案例</font>一</b>:最简单的例子就是『<font color="#3333ff">路径名称</font>』啰!以鸟哥为例,我的工作在Unix系统之下进行一些数值模式的仿真工作,偏偏由于数据量太大,为了怕日后忘记这个目录的内容与主要的意义,所以我的档名都取的很长,偏偏在执行模式的过程中,常常会切换目录!我哩ㄌㄟ,光是打那几行路径名称就快要疯掉了!所以我就设定那几行目录名称成为一个四个字符的变量,如此一来我只要输入『cd $VARI 』这个指令,嘿嘿!马上就移动到该路径下了!很方便吧!当然变量的意义还不止于此,不过这是最简单的实例说明啰!</ul></ul><ul><ul><b><font color="#000066">我的案例二</font></b>:另外一个常常需要变量的咚咚是在scripts 里面,例如我写的一个侦测登录文件的小程序 logfile.sh这个咚咚,由于里头常常需要用到『储存路径』,偏偏可能每个人的存取路径都不太一样,而如果要修改存取路径的话,嘿嘿!好几十行要同时修改呢!还可能会改错!那么我只要定义一个变量,然后后续的所有数据都使用这个变量的内容!嘿嘿!那么只要大家修改了这个变量的内容(只要一行),后续的动作就不需要修正了!这个动作常在程序或者是script 当中看到的!</ul></ul><ul><ul>所以啰,有很多的时候为了方便或者是使用于 scripts 的意义,我们必须要设定变量!然而在bash 底下的变量设定是有一定规则的,必须要来遵守才行:</ul></ul><ul><ul><ol><li>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -