【问题标题】:Why does bash test.sh work but not ./test.sh? [duplicate]为什么 bash test.sh 有效但 ./test.sh 无效? [复制]
【发布时间】:2016-09-18 10:02:57
【问题描述】:

运行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

【问题讨论】:

  • test.sh 有执行权限吗?编辑您的帖子以包含 stat test.sh 的输出
  • @muru 我不知道。 a)我怎么能弄清楚呢? b) 为什么这会导致bash 工作但./ 不工作? c) sudo 不会解决这个问题吗?
  • a) stat test.sh 寻找类似rwxr-xr-x 的东西,特别是x。 b)bash 具有执行权限,并且您正在那里运行 bash,而不是直接运行脚本,c)没有。

标签: linux bash shell


【解决方案1】:

赋予脚本执行权限:

chmod +x test.sh

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-06-17
    • 2021-11-06
    • 1970-01-01
    • 2023-03-09
    • 2018-06-15
    • 1970-01-01
    • 2022-08-17
    • 1970-01-01
    相关资源
    最近更新 更多