为什么bash test.sh工作但不是./test.sh?

时间:2016-05-21 03:24:44

标签: linux bash shell

正在运行bash test.sh。但是运行./test.sh不起作用。这是为什么?

$ PATH

Adams-MacBook-Pro:~ adamzerner$ echo $PATH
/Users/adamzerner/.rvm/gems/ruby-2.3.0/bin:/Users/adamzerner/.rvm/gems/ruby-2.3.0@global/bin:/Users/adamzerner/.rvm/rubies/ruby-2.3.0/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Users/adamzerner/.rvm/bin

test.sh

#!/bin/bash
echo Test

控制台输出:

Adams-MacBook-Pro:~ adamzerner$ ls
Applications    Downloads   Movies      Public
Desktop     Dropbox     Music       code
Documents   Library     Pictures    test.sh
Adams-MacBook-Pro:~ adamzerner$ ./test.sh
-bash: ./test.sh: Permission denied
Adams-MacBook-Pro:~ adamzerner$ sudo !!
sudo ./test.sh
Password:
sudo: ./test.sh: command not found
Adams-MacBook-Pro:~ adamzerner$ bash test.sh
Test
Adams-MacBook-Pro:~ adamzerner$

文件权限:

Adams-MacBook-Pro:~ adamzerner$ stat test.sh
16777220 1752325 -rw-r--r-- 1 adamzerner staff 0 22 "May 20 20:23:07 2016" "May 20 20:04:40 2016" "May 20 20:04:40 2016" "May 20 20:03:40 2016" 4096 8 0 test.sh

1 个答案:

答案 0 :(得分:2)

授予脚本执行权限:

chmod +x test.sh

将文件作为程序执行需要执行权限。当您使用bash test.sh时,它不是作为程序执行的,它只是bash程序的输入文件,该程序只需要能够读取它(就像cat test.sh只需要能够阅读它一样。)