MPD切换至UNIX套接字后mpc命令报错问题求助
问题根源
你遇到的问题核心是shell对~的解析时机差异:
- 当你用
export MPD_HOST=~/.config/mpd/socket时,shell不会主动展开~,导致MPD_HOST的实际值是字面字符串~/.config/mpd/socket。mpc把这个字符串当成主机名去解析,自然会报错“无法解析主机名”。 - 而直接执行
MPD_HOST=~/.config/mpd/socket mpc play时,shell会先把~展开为你的用户主目录路径(比如/home/miyoku/.config/mpd/socket),再把这个实际路径传给mpc,所以能正常连接套接字。
解决方法
你可以用以下任意一种方式修复:
- 用
$HOME替代~:执行export MPD_HOST="$HOME/.config/mpd/socket",$HOME是shell会自动展开的环境变量,能正确指向你的主目录。 - 先展开路径再导出:分两步执行:
这种写法下shell会先处理MPD_HOST=~/.config/mpd/socket export MPD_HOST~展开为实际路径,再把路径赋值给MPD_HOST并导出。 - 直接写绝对路径:把
~替换成你实际的用户主目录路径,比如export MPD_HOST=/home/miyoku/.config/mpd/socket(把miyoku换成你的用户名)。
验证方法
执行echo $MPD_HOST,如果输出是实际的绝对路径(比如/home/miyoku/.config/mpd/socket),说明设置正确;如果输出是~/.config/mpd/socket,就说明~没被展开,需要调整写法。
内容的提问来源于stack exchange,提问作者miyoku
相关产品推荐
相关产品推荐

