按照国际惯例,首先用来输出一个 hello world
1 #!/bin/bash
2 #第一个shell脚本
3 echo hello world
我们把这个文件命名为 hello,当在命令行输入 hello 的时候
David~MackBook:shell_test$ hello
-bash: hello: command not found
提示命令找不到,那么如何让系统找到 hello 脚本呢?
David~MackBook:shell_test $ PATH=$PATH:.
David~MackBook:shell_test $ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:.
冒号后面的点就是代表当前目录,这样,无论我们进入到哪个目录,系统都可以在当前目录下找到这个文件。
对于第二种方法,就更简单了,如果用相对路径的话就是 ./hello
,如果用绝对路径的话就是 ~/shell_test/hello
假设现在用了第一种方法,当我们再在命令行输入 hello
的时候
David~MackBook:shell_test $ hello
-bash: ./hello: Permission denied
提示权限拒绝,因为文件创建时,属主是没有执行权限的(当然你也可以设置 umask 值,从而在创建的时候有执行权限),所以现在要加上属主的执行权限
chmod u+x hello
David~MackBook:shell_test $ ls -li hello
5572257 -rwxr--r-- 1 David staff 51 7 11 23:35 hello
现在hello文件具有了执行权限,当我们再在命令行执行 hello
命令的时候,就可以正常输出
David~MackBook:shell_test $ hello
hello world