Answers:
执行它的另一种方法(这次没有设置执行权限):
bash /path/to/scriptname
cd到包含脚本的目录,或将其放在$ PATH中的bin文件夹中
然后输入
./scriptname.sh
如果在同一目录或
scriptname.sh
如果它在bin文件夹中。
./scriptname.sh
为我工作但scriptname.sh
给scriptname.sh: command not found
。-rwxr-xr-x
是其权限。
cd
任何地方都会引起另一个常见的初学者误解。除非脚本内部具有依赖项,否则该依赖关系要求它在特定目录中运行(例如,需要读取脚本莫名其妙地无法提供指向其的选项的数据文件),所以您永远不需要在cd
任何地方运行它,并且经常会不想。
您可以这样做:
sh scriptname.sh
sh
是一个符号链接bash
,或者如果脚本不使用任何猛砸特定结构。在前一种情况下,使用bash
代替sh
是唯一正确的便携式解决方案。在后一种情况下,这不是对这个特定问题的正确答案,因为OP专门询问了有关Bash脚本的建议。错误的答案是不负责任的;未能掌握差异的用户经常在此处发布信息,并需要显示为什么此“为我工作”答案对他们不起作用。
使用cd命令将目录更改为脚本所在的位置
然后输入
bash program-name.sh
cd
任何地方。您可以指定任意复杂的路径名作为bash
; 的参数。确实,任何采用文件名参数的程序都可以这种方式工作(或者令人震惊,令人麻木)。
这是一个旧线程,但是我碰巧遇到了这个问题,我很惊讶没有人提供完整的答案。所以这里...
问:如何在终端中执行此操作?
困惑与冲突:
sudo
做任何这一点。该命令保留用于以其他用户或“ root”(管理员)用户身份运行命令。这里很棒的帖子。(一个刚学会如何执行脚本的人除非有真正的需要(例如安装新程序),否则不应该使用此命令。放置脚本的好地方是〜/ bin文件夹。在终端提示下输入cd ~/bin
或cd $HOME/bin
。在该文件夹中,您将拥有完整权限。)
要从Unix / Linux类型系统上的终端“执行此脚本”,您必须做三件事:
告诉系统脚本的位置。(选一个)
/path/to/script.sh
)。您可以通过输入pwd
或来验证完整路径echo $PWD
在终端中。./
路径(例如./script.sh
)。简单。PATH
然后键入名称(例如script.sh
)。您可以PATH
通过键入echo $PATH
或echo -e ${PATH//:/\\n}
如果需要更整洁的列表来验证系统。告诉系统脚本有权执行。(选一个)
chmod +x /path/to/script.sh
在终端中输入来设置“执行位” 。chmod 755 /path/to/script.sh
如果您喜欢数字,也可以使用。有一个凉爽的图表的大讨论在这里。告诉系统脚本的类型。(选一个)
BASH /path/to/script.sh
或PHP /path/to/script.php
),如果脚本具有扩展名,例如.php或.py,则它是脚本名称的一部分,您必须包含它。#!/bin/bash
在您的示例中看到()。如果您将其作为脚本的第一行,则系统将使用该程序执行脚本。无需键入程序或使用扩展名。PATH
使用,#!/usr/bin/env
然后加上程序名称(例如#!/usr/bin/env bash
或#!/usr/bin/env python3
)。有利弊的深入讨论这里。script.sh
和,script.php
它们是这些脚本的文字文件名,并且如果在文件名中添加扩展名,则在运行脚本时需要包括扩展名(反之亦然;如果脚本没有没有扩展名,请不要输入扩展名)。这与DOS不同,例如在DOS中,您可以省略文件名中的.bat
or .exe
,而文件需要具有较小扩展名的文件才能被视为可执行文件。
如果您位于脚本文件可用的目录或文件夹中,则只需执行以下操作即可在可执行模式下更改文件许可权
chmod +x your_filename.sh
之后,您将使用以下命令运行脚本。
$ sudo ./your_filename.sh
上方的“。” 代表当前目录。注意!如果您不在bash脚本文件所在的目录中,则可以通过使用以下命令更改该文件所在的目录
cd Directory_name/write the complete path
命令。否则您的脚本将无法运行。
sudo
是错误的,并且可能是非常错误的。
cd
某个地方的建议很难理解,但可能也错了。
chmod +x scriptname
然后./scriptname
。