红联Linux门户
Linux帮助

执行一个程序不能运行的三个可能

发布时间:2005-05-18 01:00:41来源:红联作者:新新
在命令行输入可执行程序的文件名但是程序不能运行?有三种可能性:
第一种可能性:没有输入正确的文件名。注意:Linux 文件名是区分大小写的!举个例子,输入
“Pico”或者“PICO”并不能启动pico 编辑器程序。
第二种可能性:程序不在缺省路径PATH 下?在Linux 和其他的Unix 下,可执行程序必须在你的
PATH 下面你才能够运行。如果程序所在的目录不在缺省路径下,你可以进入到程序所在的目录:
cd the_program_directory (the_program_directory 是程序所在的目录名)
./program_name (program_name 是程序的文件名)
或者你可以输入程序完整的路径名如下:
/the_program_directory/./program_name
注意,必须在程序名前面加上点“.”和斜杠“/”才能够正确运行。这是Linux 的另外一个安全特
性,可以使“特洛伊木马程序”更难于入侵。点“.”指的是当前目录,斜杠“/”是文件和目录之
间的间隔符(DOS 用的是反斜杠“\”)。
可以用一下命令来检查一下缺省路径:
echo $PATH
如果忘记了可执行程序的文件放在哪一个目录下面了,可以用以下命令查找:
find / -name “netscape”
以上命令从根目录“/”开始查找文件名叫“netscape”的程序。用这个命令可能速度更快一些:
locate netscape
(locate 命令运行速度更快是因为它依赖于系统预先建立的文件数据库。这个数据库由一个在背景
运行的程序cron 来建立。因为cron 一般安排在夜间运行,所有如果你经常在夜晚关机,就不要依
赖locate 可以找到你要的文件,也不要巴望locate 可以找到刚刚才安装的软件名称)
请注意,PATH 对于超级用户root 和普通用户一般来说是不相同的。超级用户root 的PATH 包括
/sbin 和/usr/sbin,而普通用户一般不包括。所以,普通用户不能执行在/sbin 下面的文件,除非他们指定程序的全路径名(目录加文件名)。还有,如果你是使用su 命令从普通用户变成超级用
户root 的,因为继承了普通用户的缺省路径PATH,要执行/sbin 目录下的文件,还是要指定程序
的全路径名。
如果你知道程序的名字但是不知道程序的全路径名,可以用以下命令:
which netscape
就可以找到所有叫做netscape 的文件的全路径名
第三种可能:程序可能是不可执行的。如果是这个原因,把它改成可以执行的(必须是超级用户
root 或者文件的所有者)
chmod a+x my_file
这个命令把“my_file”变成是所有人都可以执行的。检查是否可行:
ls -l my_file
请注意,在Linux 和Unix 下,修改文件的扩展名(比如.exe 或者.bat)并不能使文件变成可以运
行。文件能够被执行需要“可执行访问模式”,而不是象DOS 下的“文件属性”.
文章评论

共有 0 条评论