因此,在一个目录/home/pi/remoteinfo/temp/code
中有一个名为 C 的程序a.out
和一个名为tempstart.sh
.
tempstart.sh 文件中的内容如下:
#!/bin/bash
./a.out
现在,当我进入时,/home/pi/remoteinfo/temp/code
我可以输入./tempstart.sh
,我的程序将开始执行。
但是当我尝试tempstart.h
从其目录之外的任何地方运行时,我得到
line 3: ./a.out: No such file or directory
.
发生了什么,我该如何解决?
我正在使用带有默认操作系统的 Raspberry Pi 3
发生的事情是脚本将
./a.out
在当前工作目录中运行命令,因为这是写入脚本的内容;如果你从其他地方运行脚本,你的二进制文件不在当前的工作目录中,导致 shell 抛出你看到的错误。如果您想使用脚本来调用二进制文件而不考虑调用它的目录,您至少有四个选项:
a.out
已经在您的目录中PATH
并停止将当前工作目录指定为位置a.out
(例如移动a.out
到$HOME/bin/a.out
,并将脚本更改为简单地运行a.out
而不是./a.out
)。./a.out
,而不是/path/to/the/location/of/a.out
)PATH
的位置,并且不要将当前目录指定为二进制文件的位置(例如PATH="$PATH:/path/to/the/binary"; a.out
cd /path/to/the/binary; ./a.out
工作目录设置为脚本的位置(例如)./script.sh
假设您在同一目录中运行它。说
a.out
是 in/var/run/a.out
,您可以更改tempstart.sh
以包含该完整文件路径。此时您可以从任何地方运行脚本(前提
a.out
是它本身不需要您在运行它时位于某个目录中)。