yaogangNUPT
(stranger)
05-03-13 21:26
如何直接执行shell脚本

脚本文件点击后常常是会提示是在终端执行还是执行的对话框
在命令行中常常需要./filename 或者是sh filename
消去对话框可以用起动器(也叫链接或者或者是快捷方式)


请问
怎么样才能使得脚本文件直接在命令行中执行而不要sh 或者是./ ???

antzcn
(newbie)
05-03-15 13:04
Re: 如何直接执行shell脚本

$ export PATH=$PATH:.

yaogangNUPT
(stranger)
05-03-16 16:24
Re: 如何直接执行shell脚本

谢谢 但是为什么会这样呢?
非常谢谢

yaogangNUPT
(stranger)
05-03-16 17:01
Re: 如何直接执行shell脚本 请教 请教

据我所知
你的那条已经在.bash_profile里面声明过
并且你所说的 只能对于当前的shell有用
换了shell后 又要export
你看更好的解决方案是什么
.bashrc 里面行不行??
请教

yaogangNUPT
(stranger)
05-03-18 12:55
Re: 如何直接执行shell脚本

我用了你提供的方法 感觉很好 于是我做了一下分析
你用的是export 将PATH地址导入子shell

但是具体的shell搜寻的地址是什么 我还是不清楚
我用$ echo $PATH 显示的是
/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/root/bin
并没有将当前目录加入

我们知道shell执行脚本的时候 从PATH的顺序搜下去如果有的话就执行
没有就找下去 并且可执行的程序要比sh脚本优先极高

我们用的是sh 就是搜索\当前目录
./ 也是如此 "."指的是当前目录 就象".."指的是前一极目录一样

我用 ln (-s) 要执行的sh脚本的路径 PATH可搜寻路径+文件名
可以完成同样的工作
当然cp \操作也能

为什么会用export PATH=$PATH 就行我很想知道

passworld
(newbie)
05-03-18 14:26
Re: 如何直接执行shell脚本

看回答仔细一点儿:
export PATH=$PATH:.
不是
export PATH=$PATH

那一个点就是当前目录,当你执行后再 printenv PATH 应该是:
/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/root/bin:.
注意最后的点,一般建议如果要加当前目录,应该把它放在最后,以免系统被黑。

你如果看man bash,他会告诉你:
~/.bash_profile: The personal initialization file, executed for login shells
~/.bashrc: The individual per-interactive-shell startup file

RTFM: Read The [censored] Manual 是很重要的。



yaogangNUPT
(stranger)
05-03-29 19:35
Re: 如何直接执行shell脚本

谢谢
佩服 佩服

bunengzaicai
(newbie)
05-04-07 22:20
Re: 如何直接执行shell脚本

补充一点:依据版主所说,添加当前目录时切记将其置后,否则依照搜寻顺序,本地程序优先执行,本地黑客程序将会代替掉系统程序运行,造成系统被黑!!!
不太建议你添加本地目录!(有时会混淆)

Contact Us LINUXFORUM.NET