MSYS2不会发送.profile

时间:2014-06-07 16:18:22

标签: mingw msys .bash-profile mintty msys2

使用MSYS2,如果我运行msys2_shell.batmintty会打开一个bash登录shell,但~/.profile无法获取来源。

无论如何,如果我在/bin/bash --login内运行mintty~/.profile会获得来源。为什么呢?

如果我通过Windows提示符而不是path\to\msys64\bin\bash.exe --login运行msys2_shell.bat,也会发生同样的情况。

PS:我也试过了.bash_profile

2 个答案:

答案 0 :(得分:2)

禁用(重命名)系统范围/etc/profile~/.profile来源。

在调查/etc/profile之后,我看到了这一点,保留它但是对profile_d () ~/.profile函数进行评论。此函数运行/etc/profile.d/中的脚本。

单独禁用它我意识到罪魁祸首是/etc/profile.d/bash_completion.sh

它的内容如下:

# Check for interactive bash and that we haven't already been sourced.
[ -z "$BASH_VERSION" -o -z "$PS1" -o -n "$BASH_COMPLETION_COMPAT_DIR" ] && return

# Check for recent enough version of bash.
bash=${BASH_VERSION%.*}; bmajor=${bash%.*}; bminor=${bash#*.}
if [ $bmajor -gt 4 ] || [ $bmajor -eq 4 -a $bminor -ge 1 ]; then
    [ -r "${XDG_CONFIG_HOME:-$HOME/.config}/bash_completion" ] && \
        . "${XDG_CONFIG_HOME:-$HOME/.config}/bash_completion"
    if shopt -q progcomp && [ -r /usr/share/bash-completion/bash_completion ]; then
        # Source completion code.
        . /usr/share/bash-completion/bash_completion
    fi
fi
unset bash bmajor bminor

第一行解释了为什么在运行子shell(第二次)工作时:环境变量已经设置,因此脚本返回。

问题是bash_completion.sh运行/usr/share/bash-completion/bash_completion,这非常庞大,很难掌握问题。

答案 1 :(得分:1)

我遇到了同样的问题。

  

我在Dan的帮助下在这张票的评论帖中找到了它:https://sourceforge.net/p/msys2/tickets/97

解决方案是编辑/etc/fstab

$ cat /etc/fstab
# For a description of the file format, see the Users Guide
# http://cygwin.com/cygwin-ug-net/using.html#mount-table

# DO NOT REMOVE NEXT LINE. It remove cygdrive prefix from path
none / cygdrive binary,posix=0,noacl,user 0 0

d:/Users/dparker /home/dparker ntfs binary,posix=0,user 0 0

注意最后一行是安装你的家庭目录所必需的...我不知道为什么你需要在/etc/fstab中明确地执行此操作,因为它似乎在没有它的情况下安装它...但也许它是不是正确

希望这对你有用,就像它对我一样。