Shell 脚本问题 运行 使用 SSH 远程命令

Shell Script Issue Running Command Remotely using SSH

我有一个部署脚本,我想在其中清除 CDN 的缓存。当我在服务器上并且 运行 我的脚本一切正常时,但是当我 SSH 进入并且 运行 只有那个文件时(即实际上没有进入服务器, cding 进入目录并 运行ning 它)它失败并指出找不到我的 doctl 命令。 这似乎只是这个程序在 ssh 上的问题,运行ning systemctl --help 工作正常。

请注意,我已经使用 sudo snap install doctl 安装了 Digital Ocean 的 doctl,它就在那里。

这是 .sh 文件(减去注释):

#!/bin/sh
doctl compute cdn flush [MYID]  --files [*]   # static cache

所以我不确定是什么问题。有人有想法吗?

同样,如果我进入服务器并且 运行 文件一切正常,但这是我使用的 SSH 命令 returns 错误:

ssh root@123.45.678.999 "/deploy/clear_digital_ocean_cache.sh"

这是错误。

/deploy/clear_digital_ocean_cache.sh: 10: doctl: not found

好吧,一个解决方案是将命令更改为我的 .sh 文件中的绝对路径,如下所示:

#!/bin/sh
/snap/bin/doctl compute cdn flush [MYID]  --files [*]   # static cache

我意识到我可以 运行 我的用户命令 ssh(比如 systemctl)所以要么改变 doctl 所在的位置(即在用户中bin) 或确保使用在命令前面添加 /snap/bin/ 的绝对路径调用命令。