我有一个“ 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
答案 0 :(得分:1)
正在发生的事情是您没有执行start.sh
文件的权限。如果您是文件的所有者,那么您要做的就是给文件授予执行权限。
chmod u+x start.sh
或使用sh
或bash
命令运行它
sh start.sh
或
bash start.sh
将执行它,不需要执行权限。
注意:在某些情况下,请稍后阅读Mac OS中需要的内容。如果我错了请纠正我。
编辑:
每个@GordonDavisson评论。在您的情况下,使用简单的脚本,使用Bourne shell还是BASH(sh
或bash
)都没有关系,但是在许多情况下,您将必须指定要使用的shell以及最佳方法这样做是将每个脚本的#!/bin/bash
(在MacOS上为#!/usr/bin/env bash
)放入。如果通过授予文件执行权限并使用#!/bin/bash
运行文件来执行文件,则bash
将强制使用./start.sh
一个事实:
sh
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
这也是一个坏主意。