当前位置:  技术问答>linux和unix

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

    来源: 互联网  发布时间:2016-03-19

    本文导语:  对环境变量PATH有点不理解,比如说,我在当前目录下定义一个执行文件  读和执行权限都有,但是为什么直接用文件名来运行不行,而要用"./文件名"?  在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程序设计这本书,
里面讲的很详细,
楼主这个问题也讲到了.
./好像是担心在子目录存在同文件名的文件
具体我也不太清楚了

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

    
 
 

您可能感兴趣的文章:

  • Linux下如何查看,设置环境变量并立即生效
  • 程序中获取的环境变量能够根据Linux系统中相应环境变量而变化吗?
  • linux 下设置环境变量 使用了setenv 和putenv 在程序结束以后 发现变量又变回去了
  • Linux能否自定义系统变量一如windows里的系统环境变量可以"新建"一样
  • linux动态链接库里全局变量和静态变量会导致动态库不可重入吗?
  • linux内核怎么定义汇编全局变量及在c文件中使用这个变量?有关0。11下的字符回显
  • [linux shell] 如何获得以一个变量的值为名的变量的值
  • linux 下环境变量如何设呀!
  • Linux 将自带的jdk设置成环境变量
  • Linux下环境变量问题以及FLEX安装问题
  • 在LINUX下安装SYBASE 需添加环境变量问题(在线等待)
  • 在Linux Shell scripts下变量如何取linux的命令运行值
  • 我想问个关于Linux系统下Sybase环境变量的问题
  • linux下到底如何设置环境变量?在哪设置?详细具体点
  • linux中大量的全局变量怎么体现结构化的程序设计?
  • linux 如何在两个.c文件中引用对方的变量。
  • linux~shell~如何取变量的值并在后面添加字符?
  • linux下,如何修改环境变量?
  • 请教:linux平台(redhat7.2)下的环境变量在哪里设置?
  • 在linux下,如何查询系统的预定义变量?
  • ACE 如何在linux下设置环境变量
  • Mysql服务器登陆,启动,停止等基本操作命令介绍(Linux/Centos环境)
  • 用的是linux,kde,gnome为中文环境,如果把它改为英文环境。
  • 如何在linux环境下配置java环境变量?
  • 因进修,需要学习《Unix 环境高级编程》一书,完全没接触过Unix/Linux,请推荐一个学习环境。
  • 有哪些中文linux,有哪些外挂的中文环境,这些中文环境之间兼容吗?
  • [讨论]学习linux使用实linux环境与虚拟linux环境的利与弊
  • 求教: Linux环境下有没有类似VC++那样的、比较容易使用的集成开发环境?
  • 想看linux内核源代码,另外手头上有一本《unix环境高级编程》,需要先把《unix环境高级编程》看完之后再看内核吗?
  • Linux下怎么搭建QT的环境,QT编程有没IDE?要用QT编程是不是得先编译QT环境?
  • 请问现在LINUX下有没有类BORLAND C++BUILDER VISUAL C++这样的集成IDE环境,我记得以前BORLAND承诺会推出类似的开发环境,可是我没有发现
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Linux下时钟同步问题:Clock skew detected原因分析及解决方法
  • linux 繁体 汉字输入法 问题 linux 繁体 汉字输入法 问题
  • Linux 下c++开发error while loading shared libraries问题解决
  • 先安装linux,后安装winxp,能否解决正常启动linux的问题不?(初学者问题,很容易回答)
  • 弱弱的一问,linux下的中文问题及网络问题,分不是问题
  • Linux新手问,Linux安装问题。
  • php iis7站长之家
  • 初学Linux,发现Linux下的版本问题很头痛。【系列问题】
  • 高深问题:有了linux内核源代码如何做成一个linux操作系统
  • 一个很菜的问题,关ARM与linux内核裁剪的问题!
  • vmware装的linux,通过win2000访问linux的web服务器有问题
  • 初次接触linux,关于linux 用户权限问题请教!
  • Linux下是否存在磁盘碎片问题和内存碎片问题?
  • linux开发的应用程序部署到其他linux的问题
  • vmware上装LINUX的问题,WIN7可以拼的通linux的IP,linux拼不通win7的IP
  • Linux互ping在局域网内大量丢包,但是linux和windows互ping就没问题。
  • 最菜的问题—关于linux“动态库”的问题
  • linux下挂载linux分区的问题
  • 一个小问题。Linux下编程语言的问题。
  • linux问题 secureCRT连接的问题 在线等急!~~
  • Linux初学者,Linux安装的问题
  • linux c/c++ IP字符串转换成可比较大小的数字
  • 在win分区上安装linux和独立分区安装linux有什么区别?可以同时安装吗?(两个linux系统)
  • linux哪个版本好?linux操作系统版本详细介绍及选择方案推荐
  • 在虚拟机上安装的linux上,能像真的linux系统一样开发linux程序么?
  • secureCRT下Linux终端汉字乱码解决方法
  • 我重装window后,把linux的引导区覆盖了,进不了linux怎么办?急啊,望热心的人帮助 (现在有linux的盘)
  • Linux c字符串中不可打印字符转换成16进制
  • 安装vmware软件,不用再安装linux系统,就可以模拟linux系统了,然后可以在其上学习一下LINUX下的基本操作 了?
  • Linux常用命令介绍:更改所属用户群组或档案属性
  • 红旗Linux主机可以通过127.0.0.1访问,但如何是连网的Win2000机器通过Linux的IP去访问Linux


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3