linux下 $PATH 环境变量的设置

上一篇 / 下一篇  2012-10-08 17:50:50 / 个人分类:Linux

问题示例 : [root@TMCMD sbin]# chkconfig
bash: chkconfig: command not found


[www@TMCMD sbin]$ chkconfig
bash: chkconfig: command not found
[www@TMCMD sbin]$ rpm -qa |grep chkconfig
chkconfig-1.3.30.2-2.el5


[www@TMCMD sbin]$ whereis chkconfig
chkconfig: /sbin/chkconfig /usr/share/man/man8/chkconfig.8.gz


在命令行下键入绝对路径地址 /sbin/chkconfig 可执行这些命令
[www@TMCMD sbin]$ /sbin/chkconfig
chkconfig 版本 1.3.30.2 - 版权 (C) 1997-2000 Red Hat, Inc.
在 GNU 公共许可的条款下,本软件可以被自由发行。

用法: chkconfig --list [name]
chkconfig --add <name>
chkconfig --del <name>
chkconfig [--level <levels>] <name> <on|off|reset|resetpriorities>


临时用命令export PATH=/sbin:$PATH 或 PATH="$PATH":/sbin导入环境路径到PATH变量中后就可临时直接执行chkconfig了
[root@TMCMD sbin]# export PATH=/sbin:$PATH
[root@TMCMD sbin]# chkconfig
chkconfig version 1.3.30.1 - Copyright (C) 1997-2000 Red Hat, Inc.
This may be freely redistributed under the terms of the GNU Public License.

usage: chkconfig --list [name]
chkconfig --add <name>
chkconfig --del <name>
chkconfig [--level <levels>] <name> <on|off|reset|resetpriorities>

举例调查ntsysv的执行情况
临时导入环境路径到PATH变量中,向PATH环境变量中写入/usr/sbin前
[root@TMCMD sbin]# ntsysv
bash: ntsysv: command not found

[root@TMCMD sbin]# echo $PATH
/usr/kerberos/sbin:/usr/java/jdk1.6.0_22/lib:/usr/java/jdk1.6.0_22/jre/bin:/usr/kerberos/bin:/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:/home/www/bin:/usr/kerberos/bin:/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:/home/www/bin:/sbin

[root@TMCMD sbin]# whereis ntsysv
ntsysv: /usr/sbin/ntsysv /usr/share/man/man8/ntsysv.8.gz

[root@TMCMD sbin]# PATH="$PATH":/usr/sbin


[root@TMCMD sbin]# echo $PATH
/usr/kerberos/sbin:/usr/java/jdk1.6.0_22/lib:/usr/java/jdk1.6.0_22/jre/bin:/usr/kerberos/bin:/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:/home/www/bin:/usr/kerberos/bin:/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:/home/www/bin:/sbin:/usr/sbin
然后就可直接执行ntsysv命令了 ntsysv需要root用户权限


$PATH 环境变量的设置

三种方法来设置环境变量:

1、临时用export 或 PATH命令:

#export PATH=/my_new_path:$PATH
#PATH="$PATH":/my_new_path

上述方法修改的$PATH 在终端关闭后就会消失 ,下次仍需键入这两个命令来执行可执行命令

2、修改系统级别的profile文件:

#vi /etc/profile

在文件末里面加入:

export PATH=/my_new_path:$PATH
这种方案对系统里所有用户都有效,安全性不高,如添加/sbin 或/usr/sbin给所有用户都可使用root用户系统级别的命令

3. 修改用户如www用户 /home/www 用户目录下的 .bashrc文件 或.bash_profile 建议修改 .bashrc

# vi /home/www .bashrc

在文件末里面加入:

export PATH=/my_new_path:$PATH
用户主目录下 的 .bashrc文件 或.bash_profile只对这个用户www有效

后两种方法一般需要重新注销系统才能生效,或者如果修改了/home/www/.bashrc,那么编辑结束后执行source .bashrc 或 执行 ./.bashrc,PATH的值就会立即生效了

最后可以通过echo命令测试一下:
# echo $PATH
看看输出里面是不是已经有了/my_new_path这个路径了。

-----------------------------------------------------------------------------------

“/bin”、“/sbin”、“/usr/bin”、“/usr/sbin”、“/usr/local/bin”等路径已经在系统环境变量$PATH中了,如果可执行文件在这几个标准位置,在终端命令行输入该软件可执行文件的文件名和参数(如果需要参数),回车即可执行。

如果不在标准位置,文件名前面需要加上完整的绝对路径。不过每次都这样跑就太麻烦了,办法就是把这个路径加入环境变量。命令 PATH="$PATH":/my_new_path可以把这个路径临时加入环境变量,但是退出这个命令行就失效了。要想永久生效,需要把这行添加到环境变量文件里。有两个文件可 选:/etc/profile和用户主目录下的.bash_profile,/etc/profile对系统里所有用户都有效,用户主目录下 的“.bash_profile”只对这个用户有效。相关的环境变量生效后,就不必老跑到软件的可执行文件目录里去操作了。

“PATH=$PATH:/路径1:路径2:...:路径n”,意思是可执行 文件的路径包括原先设定的路径,也包括从“路径1”到“路径n”的所有路径。当用户输入一个一串字符并按回车后,shell会依次在这些路径里找对应的可执行文件并交给系统核心执行。那个“$PATH”表示原先设定的路径仍然有效,注意不要漏掉。某些软件可能还有“PATH”以外类型的环境变量需要添加, 但方法与此相同,并且也需要注意“$”。

/et/profile 和用户目录下的 .bashrc .bash_profile 之间的区别和联系
/etc/profile:此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行.并从/etc/profile.d目录的配置文件中搜集shell的设置.

/etc/bashrc:为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取.

~/.bash_profile:每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次!默认情况下,他设置一些环境变量,执行用户的.bashrc文件.

~/.bashrc:该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该文件被读取.(每个用户都有一个.bashrc文件,在用户目录下)

~/.bash_logout:当每次退出系统(退出bash shell)时,执行该文件.

另外,/etc/profile中设定的变量(全局)的可以作用于任何用户,而~/.bashrc等中设定的变量(局部)只能继承/etc/profile中的变量,他们是"父子"关系.

~/.bash_profile 是交互式、login 方式进入 bash 运行的
~/.bashrc 是交互式 non-login 方式进入 bash 运行的
通常二者设置大致相同,所以通常前者会调用后者。


在登录Linux时要执行文件的过程如下:

在刚登录Linux时,首先启动 /etc/profile 文件,然后再启动用户目录下的 ~/.bash_profile、 ~/.bash_login或 ~/.profile文件中的其中一个,
执行的顺序为:~/.bash_profile、 ~/.bash_login、 ~/.profile。

如果 ~/.bash_profile文件存在的话,一般还会执行 ~/.bashrc文件。

因为在 ~/.bash_profile文件中一般会有下面的代码:
if [ -f ~/.bashrc ] ; then

. ./bashrc

fi

~/.bashrc中,一般还会有以下代码:
if [ -f /etc/bashrc ] ; then

. /bashrc

fi

所以,~/.bashrc会调用 /etc/bashrc文件。最后,在退出shell时,还会执行 ~/.bash_logout文件。

执行顺序为:/etc/profile -> (~/.bash_profile | ~/.bash_login | ~/.profile) -> ~/.bashrc -> /etc/bashrc -> ~/.bash_logout



bash 配置文件

  在您的 home 目录下,运行

ls .bash*


  您将看到这些文件:


l .bash_history :记录了您以前输入的命令,
l .bash_logout :当您退出 shell 时,要执行的命令,

l .bash_profile :当您登入 shell 时,要执行的命令,

l .bashrc :每次打开新的 shell 时,要执行的命令。

  请注意后两个的区别:'.bash_profile'只在会话开始时被读取一次,而'.bashrc'则每次打开新的终端(如新的 xterm 窗口)时,都要被读取。按照传统,您得将定义的变量,如 PATH ,放到'.bash_profile'中,而象 aliases(别名)和函数之类,则放在'.bashrc'。但由于'.bash_profile'经常被设置成先读取'.bashrc'的内容,您如果图省事的话,就把所有配置都放进'.bashrc'。

  这些文件是每一位用户的设置。系统级的设置存储在'/etc/profile'、'/etc/bashrc'及目录'/etc/profile.d'下的文件中。但您得习惯用各自的配置文件:编辑不需要'root'权限,还可以使您的设置更有个性。当系统级与用户级的设置发生冲突时,将采用用户的设置。


  读取'.bashrc'的内容,您如果要省点事的话,就把您所有的配置都放进'.bashrc'。







TAG:

 

评分:0

我来说两句

Open Toolbar