简单的环境变量 (以安装 Sage LaTeX SDK 为例说明)

一些说明:看了苏姐的帖子(本版的说明贴)和楼下的评论,发现本贴确实有点问题。主要表现举得例子上。感谢各位批评。
改起来比较麻烦,偷个懒在这里说明一下吧。免得误导了大家。(我会尽量抽时间找好的例子修改滴)
(1)能在软件源装的软件都在软件源装,这样比较科学。
(2)关于/sbin变量的问题看看这两篇篇帖子

viewtopic.php?f=27&t=850

我的意见是,要知道怎么回事。你自己改了了要知道有什么不同,有什么后果。

下面是本篇正文。

本人新手,在这里不敢说教学。只是把自己学习linux过程中觉得有用的一些东西和大家交流一下。希望给更新的新人一点帮助.由于本人也是新手,唯恐对知识理解得不深乃至有偏颇,误导了新人,这里欢迎各位及时的指出批评.我会及时的改正.

好了废话说到这,下面讲正题。

本文主要是关于环境变量的.我先来介绍一下三个文件 .bash_profile .bash_logout .bashrc 。
然后再来看看如何设置环境变量,这里以PATH为例。
再以Sage和LaTeX为主要例子具体讲一下怎么修改环境变量。

最后捎带地讲一下别名,讲几句废话。

1 .bash_profile .bash_logout 和 .bashrc

简单的讲,这三个文件都和bash有关。文件里面所记载的都是一些shell命令。记载在.bash_profile文件里的命令会在登陆shell的时候被读取并执行。而.bash_logout里的命令会在退出shell的时候被读取并执行。而.bashrc上的命令则会在你通过在命令行里键入bash启动一个新的shell时读取并读取并执行。(什么是启动新的shell?做个小试验,在shell终端输入bash, 再输入exit,有什么发现?再输入一个exit呢?再来试试,输入两次bash,再输入exit两次。发现了什么?学习Linux就是要动手)

我们可以做一个简单的小试验。当然,在做这个试验前我们要先找到这三个文件啦。这三个文件都放在用户的主目录下,由于他们都是以‘ . '开头的,所以都是隐藏文件。有两种方法可以找到他们,一种是在图形界面下找到控制,勾掉下面的显示隐藏文件就可以看到隐藏的文件了。另一种是调出终端,在工作目录是主目录的情况下(默认的就是)输入ls -a,就可以看到隐藏的文件了。这个ls就是列出目录下文件的命令。这个-a是一个选项,我的理解a就是all,没有考证过不一定正确,但可以当作一个记忆的方法。

这是你也许会发现,目录下没有 .bash_logout这个文件,没关系,你可以自己创建。其实.bash_logout感觉用得不多,但它可以执行诸如删除帐号内的临时文件或记录登入时间等作用。你也许还会发现没有.bash_profile这个文件。先不要急着自己创建,看一下有没有.profile这个文件。是的,我发现在openSUSE下的文件就是这个。其实bash允许.bash_profile有两个同义文件,一个是来自C shell的.login 或者.bash_login,还有就是来自Bourneshell 和 Korn shell的.profile文件。莫非openSUSE用的是Bourne shell?这我就不知道了。我们只要知道反正这三个文件是一样的。

其实就算你搞不清楚也没有关系。因为我们几乎不会去修改.profile文件。事实上,用户登录时使用的默认文件系统是/etc/profile。你可以去看一下这个文件,这个文件有好长。我也没有仔细的研究过,但可以猜测应该是在shell中启动一个新的shell。所以我们主要关心的是.bashrc这个文件。如何修改它呢?图形界面下鼠标单击(注意是单击,和win不一样,虽然双击貌似也可以出来,但正确的是单击)。在终端下的话,输入 vim .bashrc  vim是打开它用的编辑器名,.bashrc是被打开的文件名。当然不一定是用vim啦,但我觉得如果有精力学习一下还是不错的。
打开以后你会发现里面有很多的鸟语。然后每行前面都有一个#号,这个#号的意思是注释,就是#号后面的东西都是不执行的。那么那些东西是什么呢?看第一行就知道了 #Sample .bashrc for SuSE Linux 没错,它是一个.bashrc的例子和说明。如果你鸟语好的话,可以读一下。如果你和我一样鸟语不好的话,最好能努力学习一下鸟语再来读一下,这应该是最好的学习Linux的材料。现在我们可以先不管它们,直接跳到最后一行。(vim的话可以用h j k l来移动,或者直接 <Ctrl + g>跳转到最后一行。然后 按i 进入编辑模式。)

我们先来一个简单的 ,在最后一行输入 ls ,就是那个列出文件的命令,然后保存退出。(vim的话 先按Esc键回到命令模式,然后 :wq 回车 注意,:也是要输入的)重启shell。发现没有,在屏幕的最上方出现了你主目录下文件的名字。你把 ls 改成 ls -a再看看,发现变化了么?然后你再在终端中输入bash启动一个新的shell看看,有什么变化?

2 环境变量

也许你会说,我要开启shell的时候列出文件名干什么(虽然这是我包括大多数新手在刚学习命令行时最爱干的事)。这个.bashrc还有什么用?其实,所有你希望在打开shell是要先做的事都可以写进.bashrc。那么什么事情是每次打开shell都要做的事呢?最普遍的就是设定环境变量了。什么是环境变量了呢?我就以PATH为例,在终端中输入echo $PATH 你会看到一串的东西,仔细看会发现是文件的路径。echo是什么?它就像c里的printf,python里的print,用来输出一些东西到屏幕(准确一点是标准输出,不一定是屏幕)。试验一下,在终端输入echo a, echo b ,echo c ,echo I love openSUSE。现在明白了么?那么那个$又是什么呢?自己动手,尝试这去掉$再试试。没错$这个符号是用来提醒shell不要把PATH当作

字符串输出了,而是把它当作一个变量。再来试试下面的输入, x=1, echo x, echo $x。(注意等号两边不要留空格)发现区别了么?现在你应该可以大致理解变量了。

那么PATH这个变量又是干什么的呢?他记录的是命令所在的地方,打个比方,如果你输入了ls,就好比请ls帮你去列出文件的名称,那么电脑就要去找ls,去哪里找呢?PATH就列出了要找的地方。就像你要找同样使用openSUSE的同道中人,去哪里找呢?当然是来我们有爱的社区啦。

还是以一个简单的例子说明一下吧。大家知道有一个命令叫shutdown,具体的在终端输入sudo shutdown -h now就可以关机。小小的解释一下。sudo的意思是以root权限执行后面的命令。shutdown的用途很多,初学我们不如简单地把shutdown -h 连在一起当作一个命令,它的意思是关机, 那么now,不用解释了吧,就是马上关机,当然,你可以不用now 用 +5 。意思就死五分钟后关机。一个很实用的命令,但是你在终端输入的时候,坏了。openSUSE下提示没有这个命令。

其实不是没有,是没有找到,就是说它不在你的PATH变量里。就像你的朋友的电话不在你的手机里一样。怎么办呢?添加进去就可以了嘛。根据鸟语的提示在终端输入 cnf shutdwon (强烈建议学好鸟语),它会显示
                   Absolute path to 'shutdown' is '/sbin/shutdown', so running it may require superuser privileges (eg. root).

看见那个/sbin/shutdwon了么?那个就是shutdown所在的位置了。这事你可以通过/sbin/shutdown来运行它,注意加sudo。但是这太麻烦了。好像你没有存好友的电话,只好每次具体地输入了。这时你可以在终端输入export PATH=$PATH:/sbin,就相当于存好号码了。

这个是具体是什么意思呢?就是让PATH的值等于$PATH:/sbin.$PATH是什么呢?就是之前的PATH变量的值,在后面加上:/sbin(’:‘是分隔各个’地址‘用的。)。回忆一下你学过的编程语言,有没有这样的语句 :a = a + 1?类比一下,明白了吧?
但是这样你下次登入的时侯还有再输入一次,不是会很烦?没错,这时你只要把命令写进.bashrc就可以了。

3 实例

下面介绍几个实例。这几个软件都是非常实用的软件。LaTeX的强大我就不说了。SDK嘛,现在安卓这么火。至于Sage,那可是我的挚爱啊。大家可以在自己的电脑上安装一下,一方面练习一下安装软件,设置环境变量。另一方面也可以学习一下这

三个软件,很有用的哦。

先来说Sage。Sage最简单了,去官网下载Sage安装包解压。然后进入解压后的目录。(很多教程会让你用命令解压,这里我倒是觉得鼠标右击更方便。),把解压后的文件名改为sage(为了方便)这时你可以用ls看一下目录下的文件,有没有发现一个叫sage的文件。通过./sage运行它

就可以了,但是每次用的时候都要进入目录不是会很烦?没错只要把sage文件所在的路径添加到PATH里面就可以了。我是解压到主目录下的,所以具体如下
export PATH=$PATH:/home/你的目录/sage/sage。

SDK和Sage一样,它也不用安装,解压就可以用,我也是解压到主目录下的。export PATH=$PATH:/home/你的目录/sdk/tools

这样以后,你在终端直接输入sage或者android就可以直接启动sage和android了。

至于LaTeX,其实也很简单。由于它的安装脚本是用perl写的,所以你要先装个perl,用强大的zypper就可以了。然后同样的解压,进入目录。ls,看见那个install-tl的文件没有,用./install-tl或perl install-tl运行它,注意网上很多教程会让你使用图形界面,我不推荐使用图形。其实终端的文本是你很好的朋友,可以告诉你狠多的信息,就算安装失败了,它也会告诉你为什么出错,而图形不可以。在你运行安装之后。他会提示你如何添加环境变量的。网上曾有人求助如何修改,学了上面的东西后,你会发现很简单。网上还有一份关于在ubuntu下安装LeTeX的文档,里面的方法不提倡,有风险。而且给出的式子是不对的。内容没有错,只是作者在打印时多了或少了几个空格。但shll指令是对空格敏感的。=的两边不

能有空格。当初我在安装时直接复制粘贴,没有搞清其中的原理。不知多花了我多少时间。所以在这里也提醒比我更新的新人要脚踏实地。不要犯和我一样的错误。

4 别名

这是另外的内容。在.bashrc中不但可以添加环境变量。还可以设定别名。别名是什么?就是小名,为什么要用小名?叫着方便呗。比如关机的命令。sudo shutdown -h now.如果每次关机都输入的话太长了,给它个别名。
alias xx=“sudo shutdown -k now”
这样你在终端输入xx的时候,就相当于输入sudo shutdown -h now 。不过要注意,在建立别名的时候不要和已有的命令名相同了。怎样判断有没有重名?用cnf搜索一下看就知道有没有一样名字的命令了。

5 一些废话

我的想法之一:学习linux一定要扎实。最好是系统的看一些相关的书。
我的想法之二:新手要自强。很多前辈都很忙,很少会来写这样浅显的入门的文章。学习linux这种东西确实要靠自己看书,动手。前辈的指导也只有在你自己做了功课,动手之后才有启发。所以我在这里号召,新手在学习有所心得之后可以一来这里写一些这样总结交流的文章。新手帮助新手,也自我提高。对于一些前辈。免去了你们写这样文章的痛苦。但希望你们可以给我们的文章挑挑错,给给意见。毕竟我们的认识会有不全面或者错误。我们很乐意接受批评和意见。

1赞

谢谢楼主,我现在会设置环境变量了。

强烈不建议自己去官网下载安装 LaTeX。源里就有,包管理器用来干嘛的?直接 zypper 安装 texlive 就好了啊。免去配置环境变量的麻烦。

有道理的,而且后续装别的软件搞依赖关系会比较麻烦。到时还是要下源里的。这里有讨论,是论坛里的一个帖子。

源很好很强大。zypper 也很强大。当初去官网下是有特殊情况的。和 openSUSE 无关,主要是学校的破网。(此处省略 n 字,就不在这吐槽了)

LZ 其实可以教一个比较实用的东西,一个是改环境变量可以直接在 bash 里面 export
export PATH=$PATH:/usr/share/bin/
或者
export PATH=/usr/share/bin/:$PATH

前者是在 PATH 的尾加上路径,后者是在 PATH 的头加上路径。都行,直接在 bash 里面输入完回车就好。

第二,学会用 which。
比如说想看 shutdown,直接 which shutdown.
会显示是在 /sbin/shutdown/

这种比较适合你装完了一个包,比如说 libevent, ctags, 这些,需要找到 path,或者说你要 include 一个 event.h,要把这个头文件的地址写到 GCC 的搜索地址里面去。

============================================
废话:好像是我在这社区发的字数超过 50 的第一贴…纪念一下~