linux系统环境变量路径,关于linux下PATH环境变量的问题???

对环境变量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

|

可执行文件可以直接执行,这种文件应该含有要执行的内容,并且这种文件要在你的查找路径中。查找路径是你事先指定的路径名列表,Linux查找该路径名列表以找到可执行文件。

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

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

|

inux下,当你使用./xxx运行一个程序时,首先是SHELL来接管你的输入,然后用fork派生子进程,最后用execv系列将你的那个程序的代码交给内核

1。检查你运行的文件的属性,其属性在它的I节点中描述,如果你的那个文件不是可执行的属性,结果就会拒绝执行,如果有可执行的属性,但可执行的权限高于你目前正在使用的用户的权限,拒绝执行

2。检查是SHELL文件吗?如果是,调用相应的SHELL来解析你的这个脚本文件

3。 是ELF文件格式吗??是coff文件格式吗?是a.out文件格式吗?如果是其中任何一种,并且当前的LINUX内核都支持这三种文件格式,那么就由操 作系统内核分析你的文件格式,去掉文件头信息,将真正的代码,数据等加载进内存(实际过程并不是这样的,只不过为了描述简单,所以省略了很多细节,更多详 细说明,请参见内核中的execv系统调用)...

4.等待系统的进程调度,当内核选中你的那个程序的时候,你的那个程序就得到运行了

|

Windows为普通用户考虑得多一些,但是UNIX考虑的是安全性,如果在UNIX的PATH中添加.,有人会在一些地方放一个ls或者pwd之类的脚本,如果root用户运行这些脚本,而不是原来的那些命令,就会执行一些危险的操作,如提升某个用户的权限等。

Windows是单用户系统而且面向个人用户,问题少一点。

|

推荐看Linux程序设计这本书,

里面讲的很详细,

楼主这个问题也讲到了.

./好像是担心在子目录存在同文件名的文件

具体我也不太清楚了

|

执行可执行文件的时候不会.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值