And*_*rew 18 linux bash command-line
所以我写了我的第一个 bash 脚本:
#!/bin/bash
echo 'hello world!'
exit
Run Code Online (Sandbox Code Playgroud)
我知道它有正确的 bash 位置并且是可执行的:
$ which bash
/bin/bash
$ chmod +x myscript.sh
Run Code Online (Sandbox Code Playgroud)
现在我想从命令行运行它,但出现错误:
$ myscript.sh
myscript.sh: command not found
Run Code Online (Sandbox Code Playgroud)
所以我改为尝试这个并且它有效:
$ bash myscript.sh
hello world!
Run Code Online (Sandbox Code Playgroud)
这是我总是需要执行它的方式吗?我觉得我已经执行了其他脚本而不必在它之前加上bash
. 如何运行 myscript.sh 而不必在它前面加上bash
?
更新:这里很好地解释了为什么以及如何执行 bash 脚本。
pup*_*eno 28
您必须使文件可执行。你可以这样做
chmod +x <filename>
Run Code Online (Sandbox Code Playgroud)
你的脚本的名字在哪里,然后你必须在它前面加上它./
来指示 shell 在本地目录中运行一个文件,比如:
./script.sh
Run Code Online (Sandbox Code Playgroud)
您只能运行在您的文件中PATH
或您指定了它们的路径的文件。./
,本地目录,PATH
默认情况下不在 中,因为有人可能将其用于恶意目的。想象一下,ls
在一个目录中放置了一个名为的脚本,您进入该目录,运行ls
该脚本,然后该脚本做了一些不好的事情。
当您使用它时,您可能希望通过使用以下命令运行 shell 而不是 bash 来使其更便携:
#!/bin/sh
Run Code Online (Sandbox Code Playgroud)
或者无论安装在哪里都运行 bash,只要安装了它:
#!/usr/bin/env bash
Run Code Online (Sandbox Code Playgroud)