hjk41的日志

Avatar

Linux的一些简单命令及环境变量设置

这段时间一直有人问我关于ns2安装的问题,其中大部分问题都是因为不熟悉Linux命令,以及路径设置而造成的。难得刚把论文写完,有一段时间,就简单的介绍一下Linux中的一些常用命令,以及环境变量的设置,希望能有点用处

声明:
1. 高手就不用看了,下面的内容太傻瓜了。。。
2. 以下内容适于无任何Linux基础,但使用过一段时间Windows的读者
3. 这里使用的shell是bash,因为最常用的Redhat系列和初学者喜欢的cygwin用的都是bash
4. 我自己的Linux水平也一般,所以不会涉及高深的知识,各位高手如果有兴趣可以在留言里帮大家介绍一下
5. 我尽量不出错,但如果出现疏漏,欢迎大家指正


Linux中如何运行命令

一般来说,bash shell的提示符是这样的:

[ hjk41@Redhat ] $


其中hjk41是用户名,Redhat是机器名。

在提示符下输入一条命令,比如"ls",然后回车,命令就会得到执行,比如:

[ hjk41@Redhat ] $ ls
code  Desktop  hpcc  lmbench  opencc  PLSA  speccpu  VTune  VTune_workspace

事实上,shell在得到你输入的"ls"命令后,会先在环境变量的路径设置中查找名为"ls"的可执行文件,如果找到,就执行这个文件,如果查找不到,它会提示"command not found"。比如我们输入"ls",它所对应的可执行文件在 /bin/ls 。所以我们也可以直接提供可执行文件的路径,比如

[ hjk41@Redhat ] $ /bin/ls
code  Desktop  hpcc  lmbench  opencc  PLSA  speccpu  VTune  VTune_workspace

有很多人在安装完ns2后,运行"ns"会提示"command not found",就是因为路径设置的不对,导致shell不知道"ns"这个可执行文件放在哪里。下面我们说说路径设置的问题。

注意Linux默认是不把当前目录"./"加入路径中的,所以即使你已经切换到该可执行文件所在的目录,比如"/home/hjk41/ns-allinone-2.28/ns-2.28/bin",然后执行"ns",可能还是会提示找不到命令。这时只要执行"./ns"即可

Linux中环境变量及路径的设置

shell运行起来后,会自动设置很多变量,这些变量是可以通过命令行来修改和添加。最重要的几个变量有: PATH, LD_LIBRARY_PATH和INCLUDE。

变量中存储的是一个字符串,用 echo 命令可以查看变量的内容,用法如下


[hjk41@Redhat hjk41]$ echo $PATH
/bin:/usr/local/bin:/usr/bin:/usr/X11R6/bin


注意PATH前面有个"$"。我们可以看到,PATH中存储了很多目录名,它们之间是用冒号隔开的。

当我们执行命令时,shell就会去读取PATH中的内容,然后依次进入各个目录,查找可执行文件,一旦找到,它就会执行这个可执行文件并返回。比如我们输入的"ls"可以在/bin中找到相应的名字为"ls"的可执行文件,这时shell会执行这个文件并返回

LD_LIBRARY_PATH中存储的是动态链接库所在的目录,而INCLUDE是一些头文件所在的目录,这两个变量主要用在编程中

设置环境变量很容易,只需要使用 export 命令,用法如下:


[hjk41@Redhat hjk41]$ export PATH=$PATH:/home/hjk41/bin
[hjk41@Redhat hjk41]$ echo $PATH
/bin:/usr/local/bin:/usr/bin:/usr/X11R6/bin:/home/hjk41/bin


注意这里的"$"用法。光写PATH指的是PATH这个变量,而写 $PATH 则指PATH这个变量所指向的字符串,也就是"/bin:/usr/local/bin:/usr/bin:/usr/X11R6/bin"。所以第一条命令就是将PATH这个变量设置为一个新的字符串,这个字符串前面部分是旧的PATH字符串,后面是新的字符串":/home/hjk41/bin"。

如果export后面跟的变量名是没有被设置过的,那么shell会将其视为一个新的变量。比如:


[hjk41@Redhat hjk41]$ export HI=hello
[hjk41@Redhat hjk41]$ echo $HI
hello


进入系统时自动设置环境变量
用export命令可以设置环境变量,但是如果每回进入系统之后都要重新设置一遍环境变量就很烦人。Linux给大家提供了自动设置环境变量的方法,那就是更改 .bashrc 文件。

一般说来,有两个文件可以提供这种“进入系统时自动设置”的功能,一个是 /etc/bashrc,另一个是 ~/.bashrc。其中/etc/bashrc是被每个用户执行的,而~/.bashrc只被当前用户执行。所以/etc/bashrc只有root用户能更改,而~/.bashrc是各个用户私有的文件。

"~"指的是用户的home目录。在建立用户时,Linux会为其分配一个目录以供该用户使用。比如对"hjk41",该目录就是"/home/hjk41"。一般用户只能更改这个目录里的文件,这样各个用户之间不会互相干扰。因而~/.bashrc文件在这里就是 "/home/hjk41/.bashrc",如果有另外一名叫"hjk42"的用户,那么他的 .bashrc文件就是 "/home/hjk42/.bashrc"。这样,各个用户有自己独立的".bashrc"文件,可以根据需要自行更改,而不会互相干扰。

/etc/bashrc文件则是共享的,整个Linux中只有一份。一般来说,用户的"~/.bashrc"开头都会调用/etc/bashrc,因此更改/etc/bashrc会影响到所有用户,这个文件一般是root用户管理的。

总之,Linux在用户登录时,会执行相应的.bashrc文件,比如我登录时,就会执行 /home/hjk41/.bashrc ,而这个文件先调用 /etc/bashrc。下面是一个简单的 .bashrc:


if [ -f /etc/bashrc ]; then
        . /etc/bashrc
fi
export PATH=$PATH:/home/hjk41/bin

前面三行的意思是“如果/etc/bashrc这个文件存在,那么就执行它”,最后一行是我自己加的,用于修改PATH变量。这样每次登录时,环境变量PATH都会自动修改为我需要的样子。


一些常用命令

"cd 目录名" 进入该目录,如:

cd /home/hjk41/bin

"ls" 列出当前目录中的所有文件

"cp 源文件 目的文件" 将源文件拷贝到目的文件,如:

cp mydoc /home/hjk41/misc/


是将当前目录下的mydoc拷贝到 /home/hjk41/misc目录下

"mv 源文件 目的文件" 将源文件移动到目的文件

"rm -rf 文件" 将该文件强行删除,如果是一个目录,则连子目录一起删除(小心使用)

rm -rf /home/hjk41/RecycleBin

"env" 列出所有环境变量

"source ~/.bashrc" 在更改.bashrc文件后,执行条命令可以使更改立即生效(否则要等下次登录才能看到效果)


安装程序的一般方法
1. 一定要先看安装说明。不同的程序安装方法可能相差很大。
2. 如果没有安装说明,那么一般有如下步骤:
a) ./configure 执行这个目录下的configure文件(如果有的话),一般用来配置环境变量
b) make 编译该程序,一般开源的程序都需要这个
c) make install 安装

这三个步骤不一定能成功,但对大部份程序还是适用的。而对Redhat系列的Linux来说,更方便的方法是下载rpm包,然后安装,或是直接用yum升级,这里就不细说了

暂时写到这里,各位有补充的说请留言

楼主又回来啦!~

安装程序如果是Debian的话,就用apt-get或者aptitude,最方便了。

万分感谢啊!!!希望能从你那学到更多关于Linux的知识

非常感谢搂主...正好回答了我的疑问...

我在WINDOWS下安装完cygwin后再安装为什么总是找不到ns.exe文件呢?都重装了几次系统都不行,非常着急!!!
怎么能解决呢?zsh0214@yahoo.com.cn

可真是又好又基础的知识!
很有用,谢谢!

很有用,谢谢。

感谢楼主,非常实用的知识,不客气地收下了~

评论已关闭