在Bash脚本中使用变量结合cURL进行命令替换时出现‘curl未找到’错误的求助
解决Bash脚本中已安装curl却提示‘curl not found’的问题
嘿,这个问题我之前也踩过坑!根源其实特别简单——你**不小心覆盖了系统的核心环境变量PATH**了!
问题原因
系统自带的PATH变量是Shell用来查找curl这类可执行命令的关键路径集合。你在脚本里把PATH赋值成了'api/',直接覆盖了原来的系统路径配置,导致Shell完全不知道去哪里找curl的可执行文件,自然就抛出“curl not found”的错误了。
解决方法
只需要给你自定义的变量换个不会和系统变量重名的名字就行:
- 修改变量名:把脚本里的
PATH='api/'改成比如API_PATH='api/',同时更新BASE_URL的拼接逻辑。 - 修改后的完整脚本:
DOMAIN='http://example.com/' API_PATH='api/' BASE_URL="${DOMAIN}${API_PATH}" ACCESS_TOKEN=$(curl --location --request POST "$BASE_URL"'auth/signup' \ --header 'Content-Type: application/json' \ --data-raw '{ "email": "user@mail.com", "password": "password" }') echo $ACCESS_TOKEN
额外排查建议(如果改完还是有问题)
要是修改变量名后依然报错,可以先在终端里执行which curl,得到curl的绝对路径(比如/usr/bin/curl),然后在脚本里直接用绝对路径调用,比如把curl换成/usr/bin/curl,这样就能强制指定命令的位置了。
内容的提问来源于stack exchange,提问作者lorem ipsum
相关产品推荐
相关产品推荐

