Total Pageviews

Wednesday, 8 May 2013

如何执行脚本命令,能让shell在$PATH路径找到相应的可执行脚本?



当前系统为ubuntu,编辑 .profile文件,切换到当前帐号根目录
   
riqi@ubuntu:~$ cd ~
riqi@ubuntu:~$ pwd
/home/riqi

#添加当前用户根目录下的bin目录到PATH全局变量
   
riqi@ubuntu:~$ vim .profile

#代码
   
if [ -d "$HOME/bin" ] ; then
    PATH="$HOME/bin:$PATH"
fi

系统注销或者重启后,shell会读取.profile文件。

检查当前PATH的变量值:
   
riqi@ubuntu:~$ echo $PATH
/home/riqi/bin:/home/riqi/bin:/usr/local/bin:/usr/bin:/bin:/usr/games

添加完以后有什么用处?只要将你的可执行文件存放到$HOME/bin目录下面,其中$HOME是当前帐号的家目录的全局变量。
   
riqi@ubuntu:~$ echo $HOME
/home/riqi

现在在 /home/riqi/bin 目录下有一个可执行文件,叫finduser,这个文件必须可执行 chmod +x finduser

然后在其他路径下面,直接执行finduser  ,这个时候shell会在PATH路径下去找finduser这个可执行文件并执行!

比如,finduser代码如下:
   
#! /bin/sh

#finduser --查看第一个参数所指定的用户是否登陆
who | grep $1

在任何路径下,执行finduser,
   
riqi@ubuntu:/home/wwwroot$ pwd
/home/wwwroot
riqi@ubuntu:/home/wwwroot$ finduser riqi
riqi     tty7         2012-05-30 15:12 (:0)
riqi     pts/0        2012-05-30 17:00 (:0.0)
riqi     pts/2        2012-05-30 17:10 (:0.0)
riqi@ubuntu:/home/wwwroot$
这样就很方便了,不需要执行这个命令需要找到这个可执行脚本的绝对路径,因为你很可能忘记它的存放路径.