Я недавно установил MSYS2 с Emacs (64-разрядная версия) и в настоящее время вызываю этот Emacs с помощью ярлыка Windows. Он работает нормально, точно так же, как если бы я скачал исполняемый файл Emacs для Windows и разархивировал его куда-нибудь. То есть он собирает все мои переменные окружения Windows и тому подобное.
По разным причинам я бы предпочел запустить Emacs из командной оболочки MSYS2 и использовать переменные среды в этой оболочке. В его нынешнем виде я могу открыть оболочку MSYS2 MINGW64, набрав emacs
в командной строке, и все будет работать так, как я хочу.
Теперь я хотел бы упаковать все вв одну строку я могу вставить ярлык Windows или скрипт, который можно вызвать из ярлыка Windows. С помощью этого поста я получил следующее:
C:\msys64\bin\mintty.exe /bin/env MSYSTEM=MINGW64 /bin/bash -l -c /mingw64/bin/emacs
Это успешно открывает Emacs, но не может загрузить файл .bashrc
, который я искал в .bash_profile
обычным образом:
if [ -f "${HOME}/.bashrc" ] ; then
source "${HOME}/.bashrc"
fi
Я определяю функцию в .bashrc
, которую я вызываю в .bash_profile
, так что это очень важно. Не потребовалось много усилий, чтобы понять, что проблема в том, что HOME
не определен, поэтому .bashrc
просто не найден. Однако, если я определю HOME
следующим образом:
C:\msys64\bin\mintty.exe /bin/env HOME=/home/alanhr MSYSTEM=MINGW64 /bin/bash -l -c /mingw64/bin/emacs
я получу точно такой же результат: .bashrc
не найден и моя функция не будет выполнена. Вот где это становится странным. Если я просто отключу вызов emacs
следующим образом:
C:\msys64\bin\mintty.exe /bin/env HOME=/home/alanhr MSYSTEM=MINGW64 /bin/bash -l
, я получу оболочку bash, где .bashrc
была загружена правильно, и моя функция выполнена правильно. Я могу набрать emacs
в командной строке и заставить его работать точно так, как я хочу.
Это похоже на классический случай пропуска чего-то, что находится прямо у меня под носом, но я прочитал bash
Справочная страница безрезультатно. У кого-нибудь есть идеи, как я могу заставить это работать?