我最近:在 /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 中......至少我认为是这样......
这很正常:它不应该工作。
source "$HOME/.bashrc"
从您的主目录中的文件运行指令.bashrc
,但source $HOME/.bashrc
采用 的路径.bashrc
,将其拆分为空格,并从名称为第一个空格的部分的文件中运行指令,并将其他部分用作位置参数(可"$@"
从代码中获得中.bashrc
)。(假设 的值中没有通配符HOME
。)通常没有什么会运行类似的命令
source ~/.bashrc
: bash 在启动时已经这样做了。一个可能的解释是 WSL 窗口运行一个登录 shell。当 bash 是登录 shell 时,它不加载.bashrc
,而是加载.bash_profile
或.profile
代替。大多数人通过从.bashrc
..bash_profile
检查你的.bash_profile
(或者如果你没有你的.profile
,他们可能有错误的source $HOME/.bashrc
或. $HOME/.bashrc
代替正确的方法之一(source ~/.bashrc
或者如果你喜欢冗长source "$HOME/.bashrc"
,或者其中任何一个用.
代替source
)。