我最近:在 /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
。