关于linux下PATH环境变量的问题???

ming470612141 2008-05-18 09:46:00
对环境变量PATH有点不理解,比如说,我在当前目录下定义一个执行文件
读和执行权限都有,但是为什么直接用文件名来运行不行,而要用"./文件名"?
在PATH变量中定义的路径下查找后,会在当前路径下查找吗?
还是怎样的一种查找机制呢??

下面是运行情况,大家帮忙解决一下!
[ming@localhost ming]$ ls -l my_script
-rwxrw-r-- 1 ming ming 30 5月 18 00:22 my_script
[ming@localhost ming]$ cat my_script
echo $TEMPDIR
cd $TEMPDIR
pwd
[ming@localhost ming]$ my_script
-bash: my_script: command not found
[ming@localhost ming]$ ./my_script

/home/ming
...全文
2741 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
ming470612141 2008-05-19
  • 打赏
  • 举报
回复
我现在想问一下,如果我的当前路径没有在PATH环境变量下添加。
那么当可执行程序在PATH环境变量所定义的路径下查找不到时,
会到当前路径下查找吗??
geldqb 2008-05-19
  • 打赏
  • 举报
回复
执行可执行文件的时候不会.
geldqb 2008-05-18
  • 打赏
  • 举报
回复
inux下,当你使用./xxx运行一个程序时,首先是SHELL来接管你的输入,然后用fork派生子进程,最后用execv系列将你的那个程序的代码交给内核
1。检查你运行的文件的属性,其属性在它的I节点中描述,如果你的那个文件不是可执行的属性,结果就会拒绝执行,如果有可执行的属性,但可执行的权限高于你目前正在使用的用户的权限,拒绝执行
2。检查是SHELL文件吗?如果是,调用相应的SHELL来解析你的这个脚本文件
3。 是ELF文件格式吗??是coff文件格式吗?是a.out文件格式吗?如果是其中任何一种,并且当前的LINUX内核都支持这三种文件格式,那么就由操 作系统内核分析你的文件格式,去掉文件头信息,将真正的代码,数据等加载进内存(实际过程并不是这样的,只不过为了描述简单,所以省略了很多细节,更多详 细说明,请参见内核中的execv系统调用)...
4.等待系统的进程调度,当内核选中你的那个程序的时候,你的那个程序就得到运行了
geldqb 2008-05-18
  • 打赏
  • 举报
回复
可执行文件可以直接执行,这种文件应该含有要执行的内容,并且这种文件要在你的查找路径中。查找路径是你事先指定的路径名列表,Linux查找该路径名列表以找到可执行文件。

如果你在PATH中设置了当前路径,那么就不需要加路径.

查找的时候会根据你PATH中设置的路径逐一查找.
GumpMeteor 2008-05-18
  • 打赏
  • 举报
回复
推荐看Linux程序设计这本书,
里面讲的很详细,
楼主这个问题也讲到了.
./好像是担心在子目录存在同文件名的文件
具体我也不太清楚了
Erorr 2008-05-18
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 ming470612141 的回复:]
怎么在windows下是先查找当前路径,然后是查找PATH环境变量定义的路径呢??
[/Quote]
Windows为普通用户考虑得多一些,但是UNIX考虑的是安全性,如果在UNIX的PATH中添加.,有人会在一些地方放一个ls或者pwd之类的脚本,如果root用户运行这些脚本,而不是原来的那些命令,就会执行一些危险的操作,如提升某个用户的权限等。
Windows是单用户系统而且面向个人用户,问题少一点。
ming470612141 2008-05-18
  • 打赏
  • 举报
回复
怎么在windows下是先查找当前路径,然后是查找PATH环境变量定义的路径呢??
ming470612141 2008-05-18
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 geldqb 的回复:]
可执行文件可以直接执行,这种文件应该含有要执行的内容,并且这种文件要在你的查找路径中。查找路径是你事先指定的路径名列表,Linux查找该路径名列表以找到可执行文件。

如果你在PATH中设置了当前路径,那么就不需要加路径.

查找的时候会根据你PATH中设置的路径逐一查找.
[/Quote]

我现在想问一下,如果我的当前路径没有在PATH环境变量下添加。
那么当可执行程序在PATH环境变量所定义的路径下查找不到时,
会到当前路径下查找吗??

19,612

社区成员

发帖
与我相关
我的任务
社区描述
系统使用、管理、维护问题。可以是Ubuntu, Fedora, Unix等等
社区管理员
  • 系统维护与使用区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧