MSYS2 не является источником.profile

Использование MSYS2, если я запускаю msys2_shell.bat, mintty открывает оболочку входа в bash, но ~/.profile не получен.

Во всяком случае, если я бегу /bin/bash --login внутри mintty, ~/.profile получить источник. Зачем?

То же самое происходит, если я бегу path\to\msys64\bin\bash.exe --login через Windows вместо msys2_shell.bat,

PS: я пробовал также с .bash_profile,

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

Первая строка объясняет, почему при запуске subshell (во второй раз) все работает: переменные среды уже установлены, поэтому скрипт возвращается.

Проблема в том, что bash_completion.sh работает /usr/share/bash-completion/bash_completion, который действительно огромен, и трудно понять проблему.

У меня была такая же проблема.

Я понял это с помощью Дэна в ветке комментариев этого билета: 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 потому что он, кажется, монтирует его без его присутствия... но, возможно, он не монтировал его должным образом?

Надеюсь, что это работает для вас, как и для меня.

Другие вопросы по тегам