直接运行./start.sh,但报告意外错误

时间:2019-03-17 00:17:40

标签: bash

我有一个“ start.sh”程序

me@host:~$ cat start.sh
nohup google-chrome &
nohup lantern &
xdg-open .
emacs &

试图运行

me@host:~$ ./start.sh
bash: ./start.sh: Permission denied
me@host:~$ sudo ./start.sh
[sudo] password for gaowei: 
sudo: ./start.sh: command not found

尽管如此,它仍然有效

me@host:~$ bash start.sh
nohup: appending output to 'nohup.out'
nohup: appending output to 'nohup.out'

我无法弄清楚使用'./start.sh'是什么问题

me@host:~$ ls | grep 'start.sh'
start.sh

1 个答案:

答案 0 :(得分:1)

正在发生的事情是您没有执行start.sh文件的权限。如果您是文件的所有者,那么您要做的就是给文件授予执行权限。

chmod u+x start.sh

或使用shbash命令运行它

sh start.sh

bash start.sh

将执行它,不需要执行权限。

注意:在某些情况下,请稍后阅读Mac OS中需要的内容。如果我错了请纠正我。

编辑: 每个@GordonDavisson评论。在您的情况下,使用简单的脚本,使用Bourne shell还是BASH(shbash)都没有关系,但是在许多情况下,您将必须指定要使用的shell以及最佳方法这样做是将每个脚本的#!/bin/bash(在MacOS上为#!/usr/bin/env bash)放入。如果通过授予文件执行权限并使用#!/bin/bash运行文件来执行文件,则bash将强制使用./start.sh

一个事实:

  • 伯恩 sh ell是sh
  • B 我们的 A 获得 sh ell bash
  

我无法弄清楚使用'./start.sh'是什么问题

执行此操作:

ls -l start.sh

您应该得到这样的东西:

-rw-r--r-- 1 <username> <group> 1 Mar 17 08:57 start.sh

有麻烦了。您没有执行权。如果您的用户名与<username>不同,但是您是<group>组的成员,则可以执行以下操作:

chmod g+x start.sh

您可以通过执行以下操作来授予其他所有人(不是<user>而不是<group>的成员)执行权限(REALLY BAD IDEA):

chmod o+x start.sh

向所有用户授予执行权限:

chmod +x start.sh

这也是一个坏主意。