为什么可以';我的终端脚本是否执行/查找我的python脚本?

为什么可以';我的终端脚本是否执行/查找我的python脚本?,python,linux,shell,terminal,Python,Linux,Shell,Terminal,我正在使用一个Linux终端应用程序,它可以完美地工作,但我认为我这里有一个问题,我不知道这是一个应用程序还是一个我的错误 下面是我的test.sh,#comment中的所有内容都是在每行被调用/运行后得到的,但请注意,我想这通常是两个文件,只是将它们放在一起 #!/bin/bash echo "this is a test" # this is a test ls # code downloads pwd # /data/data/com.termux/files/

我正在使用一个Linux终端应用程序,它可以完美地工作,但我认为我这里有一个问题,我不知道这是一个应用程序还是一个我的错误

下面是我的test.sh,#comment中的所有内容都是在每行被调用/运行后得到的,但请注意,我想这通常是两个文件,只是将它们放在一起

#!/bin/bash

echo "this is a test"
 # this is a test
ls
 # code downloads
pwd
 # /data/data/com.termux/files/home
ls code
 # python
ls code/python
 # scripts programs
ls code/python/scripts
 # abc.py test.py
cd code/python/scripts
pwd
 #/data/data/com.termux/files/home/code/python/scrips
ls
 # abc.py test.py
python3 test.py
 # hello world
cd
python3 code/python/scrips/abc.py
 # python3: can't open file '/data/data/com.termux/files/home/code/python/scrips/abc.py': [Errno 2] No such file or directory
python3 code/python/scrips/test.py
 # python3: can't open file '/data/data/com.termux/files/home/code/python/scrips/test.py': [Errno 2] No such file or directory
需要注意的是,如果我跑步 在
home
中的
python3code/python/scrips/abc.py
,它仍然可以工作。这就是我自己测试和尝试所能做的,上面你们看到的就是我的“调试”


我以前在这里见过shell编程问题,所以我认为这是一个不错的问题。

这是一个路径问题。运行
cd
之后,在运行两个
python3
命令之前,您需要检查返回的路径

如果您在子目录中,例如:sub1

然后您将访问sub1/code/python/scripts

但是运行
cd
会将您发送回$HOME或/HOME/username

这意味着运行参数为code/python/scripts/abc.py的python3总是会失败,因为您不在正确的起始文件夹中

因此,问题在于这一行
cd
。这是所有问题的根源

cd && python3 code/python/scrips/abc.py
cd
命令仅适用于该信号线的上下文。
在下一行中,您将返回当前工作目录。

不带任何参数的
cd
命令将当前目录更改为您的主目录。在最后一张
cd
之后,请尝试
pwd
echo$home
。它们应该是相同的。删除最后一张
cd
(该行中唯一的一张),脚本将正常运行。@accdias-no,
python3 code/python/scrips/abc.py
如果不移回原始目录,将无法运行。更有可能的是,
/data/data/com.termux/files/home
不是主目录。在bash脚本中,在一行
env|grep PATH
中包含,并查看是否包含存在
python3
的路径。您实际上是以交互方式运行这个脚本,还是从cron之类的东西运行它?如果不以交互方式运行它,就会丢失所有路径信息,必须在bash脚本中定义路径。不完全是这样,正如您所看到的,我从主目录开始,进入脚本,运行脚本,返回主目录,再次运行我刚刚cd到的相同路径,在我证明它存在之前,它不起作用。