脚本文件点击后常常是会提示是在终端执行还是执行的对话框 在命令行中常常需要./filename 或者是sh filename 消去对话框可以用起动器(也叫链接或者或者是快捷方式) 请问 怎么样才能使得脚本文件直接在命令行中执行而不要sh 或者是./ ???
文章选项:
$ export PATH=$PATH:. --------------------Freedom!
谢谢 但是为什么会这样呢? 非常谢谢 --------------------不知道也可以说 但是不能瞎说 实话实说
据我所知 你的那条已经在.bash_profile里面声明过 并且你所说的 只能对于当前的shell有用 换了shell后 又要export 你看更好的解决方案是什么 .bashrc 里面行不行?? 请教 --------------------不知道也可以说 但是不能瞎说 实话实说
我用了你提供的方法 感觉很好 于是我做了一下分析 你用的是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 就行我很想知道 --------------------不知道也可以说 但是不能瞎说 实话实说
看回答仔细一点儿: 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 是很重要的。
谢谢 佩服 佩服 --------------------不知道也可以说 但是不能瞎说 实话实说
补充一点:依据版主所说,添加当前目录时切记将其置后,否则依照搜寻顺序,本地程序优先执行,本地黑客程序将会代替掉系统程序运行,造成系统被黑!!! 不太建议你添加本地目录!(有时会混淆) --------------------团结吧!中国人!我们不能再菜下去了!