运行 通过在 .sh 文件中调用可执行文件
Running an executable by calling it in a .sh file
我对 bash 和使用 .sh 文件还很陌生。我正在尝试 运行 通过在 .sh 文件中调用程序 aescrypt,如下所示(aescrypt 与 .sh 文件位于同一目录中):
./aescrypt -e -p password file.txt
它抛出以下错误:
./aescrypt no such file or directory
我做错了吗?
ps- 我真的不想将它添加到 PATH 变量中,因为我将在不止一台每天重置的计算机上使用它。
如果你像 ./aescrypt.sh 这样调用程序怎么样,那就是通过终端调用 .sh 程序的方法
首先,您还必须更改文件的权限以使其可执行,方法是在终端中写入命令:
sudo chmod 765 aescrypt.sh
为此,您必须位于文件所在的位置
脚本的位置无关紧要。重要的是执行脚本的进程的工作目录。最简单的解决方案实际上是将 aescrypt 添加到标准位置,如 /bin
或 /usr/bin
。如果这些都不可接受,也许 /usr/local/bin
是一个选项。否则,只需在脚本中使用 aescrypt
的完整路径。要么对其进行硬编码,要么如果它与脚本位于同一目录中,请尝试:
$(dirname [=10=])/aescrypt ...
(请注意,硬编码更可靠,但灵活性较低。如果移动可执行文件,脚本会中断。但是如果脚本在执行期间更改目录,则使用 dirname
会中断。)
我对 bash 和使用 .sh 文件还很陌生。我正在尝试 运行 通过在 .sh 文件中调用程序 aescrypt,如下所示(aescrypt 与 .sh 文件位于同一目录中):
./aescrypt -e -p password file.txt
它抛出以下错误:
./aescrypt no such file or directory
我做错了吗?
ps- 我真的不想将它添加到 PATH 变量中,因为我将在不止一台每天重置的计算机上使用它。
如果你像 ./aescrypt.sh 这样调用程序怎么样,那就是通过终端调用 .sh 程序的方法
首先,您还必须更改文件的权限以使其可执行,方法是在终端中写入命令:
sudo chmod 765 aescrypt.sh
为此,您必须位于文件所在的位置
脚本的位置无关紧要。重要的是执行脚本的进程的工作目录。最简单的解决方案实际上是将 aescrypt 添加到标准位置,如 /bin
或 /usr/bin
。如果这些都不可接受,也许 /usr/local/bin
是一个选项。否则,只需在脚本中使用 aescrypt
的完整路径。要么对其进行硬编码,要么如果它与脚本位于同一目录中,请尝试:
$(dirname [=10=])/aescrypt ...
(请注意,硬编码更可靠,但灵活性较低。如果移动可执行文件,脚本会中断。但是如果脚本在执行期间更改目录,则使用 dirname
会中断。)