如何从PATH变量中移除含空格路径,解决WSL交叉编译Makefile报错?
解决方案
1. awk 实现命令(兼容性好,逻辑清晰)
echo $PATH | awk -v RS=':' '!/ /{printf "%s%s", sep, $0; sep=":"}'
- 实现逻辑:将PATH按冒号拆分为独立路径段,过滤所有带空格的段后重新拼接为完整PATH字符串,不会产生首尾多余冒号问题。
2. sed 实现命令
echo $PATH | sed -E 's/(^|:)[^:]* [^:]*/\1/g' | sed -e 's/^://' -e 's/:$//'
- 实现逻辑:先批量匹配删除所有带空格的路径段,再清理路径首尾可能残留的多余冒号。
永久生效配置
如果需要每次启动shell自动完成过滤,可将以下内容添加到shell配置文件(~/.bashrc 或 ~/.zshrc)末尾:
export PATH=$(awk -v RS=':' '!/ /{printf "%s%s", sep, $0; sep=":"}' <<< "$PATH")
添加后执行source ~/.bashrc(zsh用户执行source ~/.zshrc)即可立即生效。
内容的提问来源于stack exchange,提问作者5p0ng3b0b
相关产品推荐
相关产品推荐

