怎么在bash脚本中运行一个已经编译好的可执行程序./可执行程序名由于安全原因,PATH环境变量不包括当前目录,因此要执行在当前目录下的程序,前面必须加上./表示当前目录
bash脚本文件中为什么以#。开头 在每个bash脚本的开头都使用#。这用来告诉系统此文件的执行需要指定一个解释器。“#。实际上是一个 2 字节的魔力数字,这是指定一个文件类型的特殊标记,换句话说,在这里指是一个可执行的脚本(键入 man magic 来获得关于这个迷人话题的更多详细信息)。在“#。之后接着是一个路径名,这个路径名指定了一个解释脚本中命令的程序,这个程序可以是 shell,其它编程语言或任意一个通用程序。这个指定的程序从头开始解释并且执行脚本中的命令(从#。行下边的一行开始),忽略注释。如:#。bin/shbin/bashusr/bin/perlusr/bin/tclbin/sed-fusr/awk-f上边每一个脚本头的行都指定了一个命令解释器,如果是/bin/sh,那么就是默认shell(在 Linux 系统中默认是 Bash)。使用#。bin/sh,在大多数商业发行的 UNIX 上,默认是 Bourneshell,这将让你的脚本可以正常的运行在非 Linux 机器上,虽然这将会牺牲 Bash 一些独特的特征。脚本将与 POSIX 的 sh 标准相一致。注意:#。后边给出的路径名必须是正确的,否则将会出现一个错误消息,通常是Command not found,这将是你运行这个脚本时所得到的唯一结果。当然#。也可以被忽略,不过这样你的脚本文件就只能是一些命令的集合,不能够使用 shell。
在终端中直接运行指令与放在脚本中运行指令, 运行结果不一样 ls-l `which sh`sh-version看看输出是什么估计和你当前用的 shell 命令行不是同一个 shell 解释器。写 shell 脚本,记住一定要在最开始写#。bin/bash 或者其他的解释器,比如 csh、tsh。python、perl、php 都可以这么用,这样你的脚本就制定了一个解释器来运行。运行时不要用 sh xxx.sh,而是赋予可运行权限后./xxxx.sh 方式运行。一般 Linux 下面的/bin/sh 是一个链接,指向一个默认的 shell 解释器,这个链接如果不是你需要的解释器,那么脚本运行出现任何问题都可能。如果系统装了 busybox,他也会提供一个 sh 解释器,而且命令的文件名也是 sh,他和 bash 运行结果也有区别,只是这个 sh 不一定在/bin 里面。