Java ProcessBuilder从错误的/bin调用命令

Java ProcessBuilder从错误的/bin调用命令,java,bash,processbuilder,Java,Bash,Processbuilder,我在github上有一个repo,每当有一个从pull请求到它的合并时,我都想拉取最新的主分支。我有一个springboot应用程序来处理这个请求,我还编写了一个脚本来处理这个请求。当事件发生时,springboot应用程序通过ProcessBuilder运行该脚本,但我不断从脚本中的命令中得到“command not found”错误(特别是sudo,用于以不同用户和git的身份运行命令) 我在跑爸爸_OS,一个基于Ubuntu的Linux发行版,我使用Eclipse作为我的IDE 我已经检查

我在github上有一个repo,每当有一个从pull请求到它的合并时,我都想拉取最新的主分支。我有一个springboot应用程序来处理这个请求,我还编写了一个脚本来处理这个请求。当事件发生时,springboot应用程序通过ProcessBuilder运行该脚本,但我不断从脚本中的命令中得到“command not found”错误(特别是sudo,用于以不同用户和git的身份运行命令)

我在跑爸爸_OS,一个基于Ubuntu的Linux发行版,我使用Eclipse作为我的IDE

我已经检查过程序认为它是什么用户,并且它作为我的用户进行响应。我已确保路径包括
/bin
/usr/bin
等内容。我在eclipse中将路径复制为环境参数。我尝试在脚本中使用命令的绝对路径,如
/bin/git
,或
/usr/bin/git
。所有这些都不起作用。我决定使用
ls
查看ProcessBuilder在
/bin
/usr/bin
中从它的角度看到了哪些文件,并注意到它似乎缺少我可以看到的文件,比如git,我想这就是为什么它显然找不到的原因

ProcessBuilder运行脚本时用户发出回声:
evan

ProcessBuilder运行脚本时回显路径:
/home/evan/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/usr/games:/usr/local/games:/snap/bin:/srv/minecraft/bin

ProcessBuilder给出的错误:
/srv/minecraft/bin/bashpull:第38行:未找到git:command

有人知道为什么ProcessBuilder似乎看不到与它认为的用户相同的文件,而当我是用户时,我可以看到这些文件吗

示例-在
/bin
中查找git:

ProcessBuilder

Me

[编辑] 我在文件系统中搜索了我发布的ProcessBuilder看到的屏幕截图中的一条命令,并发现出于某种原因,我的ProcessBuilder似乎位于这些文件夹中:

以下是在我的ProcessBuilder上设置的所有环境参数。我想这里可能有什么原因导致ProcessBuilder被降级到另一个目录中运行东西

Key=PATH,Value=/home/evan/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/usr/games:/usr/local/games:/snap/bin:/srv/minecraft/bin
键=LC_测量,值=en_US.UTF-8
Key=XAUTHORITY,Value=/run/user/1000/XAUTHORITY
Key=INVOCATION_ID,Value=aa620309e8eb40119f6fccf9759a9f47
Key=XMODIFIERS,Value=@im=ibus
键=LC_电话,值=en_US.UTF-8
Key=XDG\u DATA\u DIRS,Value=/app/share:/usr/share:/usr/share/runtime/share:/run/host/user share:/run/host/share
Key=GDMSESSION,Value=pop
Key=MANDATORY\u路径,Value=/usr/share/gconf/pop.MANDATORY.PATH
键=LC_时间,值=en_US.UTF-8
键=纸张大小,值=字母
键=GTK\U IM\U模块,值=ibus
Key=DBUS\u SESSION\u BUS\u地址,Value=unix:path=/run/user/1000/BUS

Key=PS1,Value=[正如评论所证实的,我的ProcessBuilder确实在另一个目录中查找。我运行一个名为Pop_OS!的Linux发行版,它的应用商店将Eclipse作为flatpak提供

作为一项安全功能,Flatpak沙盒可以独立运行应用程序,将它们放在文件系统的某个部分,而这一限制正是导致我出现问题的原因


我卸载了Eclipse的Flatpak版本,并从他们的网站上使用Eclipse安装程序重新安装了它。在我卸载之后,问题得到了解决。我能够运行我的脚本,并且没有更多的“未找到命令”问题。

您正在查看两个不同的目录。您的应用程序是否运行在Docker或chroot或提供不同文件系统视图的类似目录下?绝对没有Docker。我正在从eclipse运行springboot应用程序进行调试,因此我不确定这是否会带来一些限制。