linux shell脚本问题

按照以下步骤:
1、vi jiaoben.sh
#!/bin/bash
echo "jiaoben"
2、chmod u+x jiaoben.sh
3、./jiaoben
其中如果没有第二步,直接跳到第三步,显示没有权限,但是如果此时执行 . jiaoben.sh为什么就可以执行了???为什么没有执行权限但是.还可以执行而./不行???

我来说说:
在Linux中,脚本的执行有3种方式
1.bash jiaoben.sh这种方式是不需要可执行属性的,因为bash是一个命令,而后面的文件名就是它的参数,它在当前Shell中启动一个子Shell来运行脚本程序。
2.“.” jiaoben.sh这种方式是在当前Shell中执行脚本程序,同样“.”是一个命令,文件名是它的参数,不需要可执行属性。
3.直接通过文件名执行脚本程序,这时需要设置可执行属性,./jiaoben.sh就表示在当前目录执行jiaoben.sh
希望能帮助你。。。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-05-06
. jiaoben.sh,相当于是 source jiaoben.sh,即在当前的shell环境下执行jiaoben.sh 里的代码

平时也有类似的用法 ,如改变了 /etc/profile 时,就用 . /etc/profile 使改变即时在当前shell即时生效
或改为了字符集 /etc/sysconfig/i18n 时,用 . /etc/sysconfig/i18n 使它生效
第2个回答  2010-05-09
没有 第二步也可以执行的
用bash ./jiaoben

加了第二步#!/bin/bash就有用了
相当/bin/bash ./jiaoben
相似回答
大家正在搜