当前位置: 技术问答>linux和unix
./和 sh 的区别
来源: 互联网 发布时间:2017-01-03
本文导语: 当前登操作用户为root -rwx------ 1 root root 17 2011-09-22 23:33 test 现在执行这个shell脚本 ./test 成功 sh test 成功 现在去掉执行权限x -rw------- 1 root root 17 2011-09-22 23:33 test 还是执行这个shell脚...
当前登操作用户为root
-rwx------ 1 root root 17 2011-09-22 23:33 test
现在执行这个shell脚本
./test 成功
sh test 成功
现在去掉执行权限x
-rw------- 1 root root 17 2011-09-22 23:33 test
还是执行这个shell脚本
./test 失败 (-bash: ./test: Permission denied)
sh test 成功
请问..这个./和sh在x权限中实质上有什么区别..如果有详细的文档..可以发个链接..
多谢各位...
|
./ 这个是可执行文件 直接执行
比如 gcc编译出的./a.out
而 脚本的执行需要解释器,所以你的sh 就是代表使用的解释器的类型。
只是 linux有些默认的解释器,才导致貌似有些脚本也可以直接./脚本名
但对于一些脚本 例如 python 最好还是前面指定解释器 写作: python ***.py
比如 gcc编译出的./a.out
而 脚本的执行需要解释器,所以你的sh 就是代表使用的解释器的类型。
只是 linux有些默认的解释器,才导致貌似有些脚本也可以直接./脚本名
但对于一些脚本 例如 python 最好还是前面指定解释器 写作: python ***.py
|
楼主写过脚本没有。
写脚本文件的时候一般在前面有一句#!/bin/sh
比如写一个test.sh脚本
表示告诉系统,该文件默认是使用sh脚本解释器来执行。
可以直接./test.sh执行。
但是如果你test.sh是
则理论上来说需要sh test.sh 才能执行该脚本。(其实这个时候你./test.sh也可以,因为默认会使用sh来执行),但是你如果写python等其他脚本,如果指定解释器,则直接执行是不行的。
写脚本文件的时候一般在前面有一句#!/bin/sh
比如写一个test.sh脚本
#!/bin/sh
echo "hello"
表示告诉系统,该文件默认是使用sh脚本解释器来执行。
可以直接./test.sh执行。
但是如果你test.sh是
echo "hello"
则理论上来说需要sh test.sh 才能执行该脚本。(其实这个时候你./test.sh也可以,因为默认会使用sh来执行),但是你如果写python等其他脚本,如果指定解释器,则直接执行是不行的。