如果 $HOME 包含空格,则不会在 WSL 上读取 .bashrc

如果 $HOME 包含空格,则不会在 WSL 上读取 .bashrc

我最近:在 /etc/passwd 中指定用户的主目录路径,其中包含空格?但现在,.bashrc当我打开 Ubuntu 16.04 LTS WSL 窗口时,我的源代码无法正确获取,因此我必须source手动进行...它适用于source ~/.bashrc,但奇怪的是不适用于source $HOME/.bashrc,但奇怪的是确实适用于source "$HOME"/.bashrc

所以杰夫关于上一个问题,我认为问题可能是其他东西在没有引用它的情况下采购它。

事实上,类似的问题让我fork git hub 项目其中发生了类似的错误;我归因于这是因为我在 Windows 上使用 mingw64 / git-bash,但这根本不是问题,因为现在它发生在 WSL 中......呃至少我认为是这样......

答案1

奇怪的是不与source $HOME/.bashrc

这很正常:它不应该起作用source "$HOME/.bashrc"运行.bashrc主目录中文件中的指令,但source $HOME/.bashrc获取 的路径.bashrc,在空格处将其分割,并运行名称为第一个空格之前的部分的文件中的指令,并使用其他部分作为位置参数(可从"$@"代码中获取)在.bashrc)。 (假设 的值中没有通配符HOME。)

通常没有什么会运行这样的命令source ~/.bashrc: bash 在启动时已经执行了此操作。一个可能的解释是 WSL 窗口运行登录外壳。当 bash 是登录 shell 时,它不加载.bashrc,它加载.bash_profile或者.profile相反。大多数人通过以下方式解决这个怪癖采购.bashrc.bash_profile。检查你的.bash_profile(或者如果你没有.profile,他们可能有错误的source $HOME/.bashrc或而. $HOME/.bashrc不是正确的方法之一(source ~/.bashrc,或者如果你喜欢冗长source "$HOME/.bashrc",或者用其中之一代替.source

相关内容