Linux下程序运行方法

解增言

2020-04-09 14:20

Windows下运行程序非常简单,在开始->程序菜单中找到点开或双击程序的桌面快捷方式就行。Linux命令行下运行一个程序可以分两种情况:

1. 二进制程序

利用编译语言如C语言编写的程序,在编译后可以生成一个可执行的二进制文件。这个文件可以直接运行,如:

$ vi hello.c
$ cat hello.c#include <stdio.h>
int main() {
        printf("Hello world!\n");
}$ gcc -o hello hello.c
$ ls
hello  hello.c
$ ./hello
Hello world!

其中的gcc是Linux下C语言的编译工具,选项-o hello的作用是指定输出的可执行文件名为hello。上面运行hello文件前面的路径(当前目录./)不能少,否则的话系统是不知道到哪里找hello这个文件的。

$ hello
bash: hello: command not found...

如果想能和执行系统命令一样,直接输入hello也可以运行,那就需要将该文件所在的目录添加到PATH环境变量中:

$ export PATH=$PATH:/home/xiezy/run
$ hello
Hello world!

上面的export命令是将局部变量设置为环境变量,从而其它进程也可以使用更新后的变量。上面修改环境变量的方法只在当前登陆有效,退出后将会恢复原样。如果要永久生效,需要修改环境文件(~/.bashrc或~/.bash_profile),将export PATH=$PATH:/home/xiezy/run写进环境文件,这样每次登录后系统先执行该语句,自动修改环境变量。

2. 脚本文件

脚本语言如Perl、Python、R、Shell等是不需要用户编译的,在写好脚本文件后可以直接运行。运行脚本文件有下面两种方法:

(1)使用脚本语言解释器

直接用解释器后面跟脚本文件,如下面的Perl程序:

$ vi hello.pl
$ cat hello.pl#!/usr/bin/perl
print "Hello world!\n";$ perl hello.pl
Hello world!

其实无论怎样运行脚本程序都要用到脚本解释器,只不过上面的方法是用户直接运行解释器,这样的话即使脚本文件中像下面一样没有在第一行指定解释器的路径,也可以顺利运行,因为一般来说你的环境变量PATH中已经包含了解释器所在的路径。

$ cat hello.plprint "Hello world!\n";$ perl hello.pl
Hello world!

如果是Shell脚本,除了用解释器bash或sh(CentOS和Fedora下的sh其实就是bash的符号链接)外,也可以用source、.(点命令)或exec命令运行。

(2)直接运行脚本文件

直接运行脚本文件需要满足两个条件:1)脚本文件的第一行指定了解释器的路径;2)脚本文件添加了执行权限。如下面的Python程序:

$ vi hello.py
$ ls
hello  hello.c  hello.pl  hello.py
$ cat hello.py#!/usr/bin/python
print ("Hello world!");$ chmod +x hello.py
$ ls
hello  hello.c  hello.pl  hello.py
$ ./hello.py
Hello world!

如果没有脚本的第一行,系统就不知道用哪个解释器运行该脚本,从而出错:

$ ./hello.py
./hello.py:行1: 未预期的符号 `'Hello world!'' 附近有语法错误
./hello.py:行1: `print ('Hello world!')'

如果没有为脚本文件添加可执行权限,也会出错:

$ ./hello.py
-bash: ./hello.py: 权限不够

脚本程序也可以和编译好的二进制文件一样,将其所在目录添加到环境变量PATH中,就可以在文件前不写路径直接运行,具体方法和前面描述的一样,不再赘述。