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

如何使用sed行内编辑正确将~替换为$HOME?

解决Makefile中sed替换~为实际家目录路径失败的问题

你遇到的问题根源在于:Makefile里的单引号会阻止shell展开$HOME变量,导致sed把$HOME当成普通字符串替换,而非实际的家目录路径。

两种可行的解决方案:

方案1:改用双引号并转义Makefile中的$

修改Makefile的sed命令,把单引号换成双引号,同时将$HOME写成$$HOME(Makefile中$是特殊字符,需用两个$表示shell中的单个$):

system:
    sed -i "s/~/$$HOME/g" myapp.desktop

这样shell会先把$HOME展开为实际路径(比如/home/user1),再传给sed执行替换操作。

方案2:在Makefile中提前展开HOME变量

先定义一个Makefile变量存储实际家目录路径,再拼接进sed命令:

HOME_PATH := $(HOME)
system:
    sed -i 's/~/'$(HOME_PATH)'/g' myapp.desktop

Makefile会先将$(HOME)展开为实际路径,再生成最终的sed命令,确保替换的是正确的家目录。

执行任意一种方案后,你的myapp.desktop文件中Exec行会被替换为:

Exec=/home/user1/.local/bin/desktop_app

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 23:40:11