【发布时间】:2021-06-04 09:24:58
【问题描述】:
我有一个部署脚本,我想在其中清除 CDN 的缓存。当我在服务器上并运行我的脚本时,一切都很好,但是当我 SSH 并仅运行该文件(即实际上没有进入服务器,cding 进入目录并运行它)时,它失败并声明我的找不到doctl 命令。 这似乎只是这个程序在 ssh 上的问题,运行 systemctl --help 工作正常。
请注意,我已经使用 sudo snap install doctl 安装了 Digital Ocean 的 doctl,它就在那里。
这是.sh 文件(减去 cmets):
#!/bin/sh
doctl compute cdn flush [MYID] --files [*] # static cache
所以我不确定问题是什么。有人有想法吗?
同样,如果我进入服务器并运行文件,一切正常,但这是我使用的 SSH 命令返回错误:
ssh root@123.45.678.999 "/deploy/clear_digital_ocean_cache.sh"
这是错误。
/deploy/clear_digital_ocean_cache.sh: 10: doctl: not found
【问题讨论】:
-
这个
doctl命令存储在哪个目录中?该目录通常如何添加到您的命令 PATH 中? -
我只是想出了一个使用
doctl的绝对路径的解决方案,它位于/snap/bin。我实际上不确定该目录是如何添加到命令路径中的。是否可以在ssh命令期间将snap/bin/添加到命令路径中? -
将
PATH="$PATH:/snap/bin添加到脚本的开头。 -
您的本地
PATH未在远程主机上使用。ssh不会将您的本地环境转移到远程机器上。
标签: bash ssh sh digital-ocean