日期:2014-05-16  浏览次数:20870 次

关于UNIX可执行文件的执行问题
小弟最近在UNIX下编写程序,用makefile编译后生成可执行文件
在运行的时候发现:
如果可执行文件有后缀名的话,直接输入文件名就可以执行,用./filename可以
但是如果可执行文件没有后缀名的话,直接输入文件名就不执行,必须用./filename才可以

很困惑,不知道原因
请教各位高手

------解决方案--------------------
使用命令:
#env 
可以对目前终端上所使用的环境列表进行查询。
其中:
PWD: 表示的是,当前工作目录的绝对路径
PATH:表示的是,用于寻找可执行文件的路径前缀
PATH环境变量的值为:
PATH=/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin
:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/root/bin
这是终端在执行命令时,文件的搜索目录,搜索顺序从左到右
观察到最后的路径/root/bin 
其文件目录在linux下并不存在
于是我们可以通过它来于我们自己经常要所用的可执行文件库进行符号链接,这样当我们下次使用自己所编写的命令是,再也不用指定文件的路径,只要直接敲上文件的文件名就可以了。
具体实现:
假定我的可执行文件放在路径:/root/unxi中
于是可以执行如下命令:
#ln -s /root/unix /root/bin
这样/root/bin就与/root/unix 建立了符号联接
例如要运行文件1
直接敲入
#1
即可。