我最近养成了编程的习惯。我看到了这个教程,它允许我使用一个名为SearXNG的程序,它允许我制作自己的私有搜索引擎。(顺便说一下,本教程请点击这里)这使我不得不执行这个命令,特别是要运行搜索引擎:
cd searxng-docker && sudo docker-compose up -d(顺便说一下,cd在那里,因为searxng-docker是安装代码的目录)
现在,我想创建一个sh脚本,如果我运行,那么搜索引擎将自动启动。我已经看过多个教程,这些教程向我展示了如何在sh脚本中编写代码,但没有一个是有用的。
exec cd searxng-docker && sudo docker-compose up -d我试着把它放到脚本中,它打开了终端,但是没有执行命令。我该怎么解决这个问题?
发布于 2022-11-06 11:45:44
Well...thanks所有试图回答我问题的人,但我自己找到了答案。所以,如果你想找到这个问题的答案,那就别再看这个了。
首先要澄清一下。所有.sh脚本都可以用来运行bash命令。你只需要添加一条线就行了。
SHEBANG行指定将使用哪个应用程序运行脚本。这个应用程序可以是任何东西,从Python到Bash。
要使脚本使用bash运行,我们所做的是在脚本的开头键入以下内容:
#!/bin/bash现在我们已经添加了SHEBANG行,这个脚本中的所有行都将作为bash命令运行。
接下来,我们可以简单地添加想要执行的命令。现在,脚本将如下所示:
#!/bin/bash
cd searxng-docker
sudo docker-compose up -d现在,我们可以做一个简单的更改,以使脚本更高效一些。如果您查看cd行,您可以看到我们正在光盘到searxng-docker文件夹中。这意味着cd命令指向文件夹的相对位置。这很糟糕,就好像我们在主目录之外的任何其他目录中一样,cd命令将无法工作。
要解决这个问题,我们必须将cd searxng-docker命令替换为cd /home/<your-username>/searxng-docker命令。不要忘记用您的真实用户名替换<your-username>。
现在,只剩下一个问题。使脚本可执行。
为此,输入终端:chmod +x ./<your-script-name>,然后再次用您创建的脚本的名称替换<your-script-name>。
现在您的脚本已经准备好了,您可以通过右键单击脚本并选择“replacing”来执行它,或者在终端中键入./<your-script-name>,再次将<your-script-name>替换为您创建的脚本的名称。
发布于 2022-11-05 09:46:21
exec cd searxng-docker && sudo docker-compose up -d首先,在我们讨论你的具体情况之前,先做一个一般性的解释。此命令将首先更改目录(cd改为searxng-docker)。只有在成功的情况下(&&),才会运行以下命令。
正如当前所写的,脚本要求您在包含searxng-docker目录的目录中。否则,第二个命令将不会继续执行。
要确保脚本可以独立于当前目录启动,请将相对路径searxng-docker更改为绝对路径(例如,如果该目录驻留在用户usrname的主目录中,则为/home/username/searxng-docker )。
在您的特殊情况下,由于您更改目录以查找可执行文件,有一个更好的解决方案:用其绝对路径名称替换直接启动可执行文件的整行:
#!/bin/sh
sudo /home/username/searxng-docker/docker-compose up -dhttps://askubuntu.com/questions/1439107
复制相似问题