You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

bash函数中执行serviceacontrol -S提示command not found的问题求助

问题解决

核心原因

sudo切换用户执行命令时,默认会重置环境变量(包括PATH),导致找不到serviceacontrol命令——而你直接以oas_mgr登录时,用户的PATH已经包含了该命令所在目录,所以能正常执行。

解决方法

1. 使用命令的绝对路径(最可靠)

先以oas_mgr用户登录,执行以下命令找到serviceacontrol的绝对路径:

which serviceacontrol

假设得到的路径是/local/users/bin/serviceacontrol,则修改sudo命令为:

sudo -u oas_mgr sh -c 'cd /local/users/conf; /local/users/bin/serviceacontrol -S'

2. 保留用户环境变量执行

如果不想用绝对路径,可以添加-E参数让sudo保留oas_mgr用户的环境变量(需确保sudoers配置允许此操作):

sudo -E -u oas_mgr sh -c 'cd /local/users/conf; serviceacontrol -S'

注意点

你尝试的第二个命令sudo -u oas_mgr sh -c 'cd /local/users/conf; "serviceacontrol -S"'是错误写法——把命令和参数用引号包裹后,shell会将整个字符串serviceacontrol -S当作一个命令名去查找,自然会提示找不到,这种写法要避免。

内容的提问来源于stack exchange,提问作者Rubberducky

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 08:59:54