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: