Профиль MinGW Bash


37

Я использую MinGW в Windows 7. У меня есть .bashrcнесколько псевдонимов. Этот файл находится в моей домашней папке, куда меня запускает MinGW, поэтому он также считает, что эта папка - моя домашняя папка. Он не загружает содержимое папки автоматически. Я должен запустить bashкоманду, чтобы заставить работать псевдонимы.

Я попытался переименовать его .bash_profile. Это только усугубляло ситуацию, поскольку оно не загружалось автоматически, а также не загружалось при запуске bashвручную.

Как я могу решить эту проблему?


Извините, путь должен был быть: C: \ MinGW \ msys \ 1.0 \ home \ Your_Username_Here \ .profile

Ответы:


48

bashвероятно начинает работать как оболочка входа в систему, и в этом случае она не читает .bashrcавтоматически. Вместо этого это читает .bash_profile. Из руководства Bash :

Итак, обычно ваш ~ / .bash_profile содержит строку

if [ -f ~/.bashrc ]; then . ~/.bashrc; fi

после (или до) любых специфичных для входа инициализаций.

Итак, в заключение, создайте .bash_profileфайл в вашем домашнем каталоге и добавьте строку, приведенную выше.

Если ваш вызов bashвызывается как sh, тогда вам нужно использовать .profileвместо него .bash_profile(см. Раздел «Вызов с именем sh» в ссылке на руководство Bash выше).


1
Спасибо за идею, не сработало. Как я уже говорил в вопросе, размещение команд псевдонимов в .bash_profile не работает вообще, поэтому кажется, что это не читается.
KurToMe

5
Это дало мне идею сделать именно то, что вы сказали, но вместо этого поместить его в файл .profile. По какой-то причине это сработало (возможно, MinGW не использует Bash по умолчанию или что-то сумасшедшее). Если вы добавите эту опцию в свой ответ, я отмечу ее как принятую.
KurToMe

1
Ах, в моем вопросе была опечатка, которую я исправил, я назвал это .bash_rcв вопросе, но я имел в виду .bash_profile.
KurToMe

несколько более кратко:[ -f ~/.bashrc ] && . ~/.bashrc
Rich Homolka

1
@KurToMe Я отредактировал, чтобы осветить твою ситуацию.
Jjlin

8

Я использую Windows XP, и у меня была такая же проблема. Я нашел HOWTO Создание среды сборки MSYS .

Это важная строка:

Чтобы помочь определить сборку во время выполнения и текущий рабочий каталог, в ~/.profileфайл можно добавить следующее .

В оболочке MinGW я создал .profile:

cd ~
touch .profile

Я использовал Notepad ++, чтобы отредактировать его как текстовый файл в формате Unix .profileи сохранить его в своем домашнем каталоге,C:\MinGW\msys\1.0\home\Your_Username_Here\.profile

Затем я добавил свой псевдоним и сохранил:

alias n='nano -w'

Затем я запустил ярлык MinGW Shell из меню «Пуск» и ура, все заработало ! Нано без переноса текста.

Я надеюсь, это поможет вам.


То, что вы говорите, не соответствует ... ~ означает домашний каталог пользователей ... тогда ваше заявление c: \ MinGW \ msys \ 1.0 \ home ... это не имеет никакого смысла, тильда - это ссылка на ПОЛЬЗОВАТЕЛИ дома ... на окнах, которые% userprofile% ...
Эдди Б

2

Я не нашел .bash_profile для меня (он не читался), поэтому я выбрал подход .profile и вставил в него:

exec bash

Это заменяет мою текущую оболочку новым запуском bash, который читает мой .bashrc

Я думаю, что использование .profile предполагает, что sh используется при входе в систему, а не в bash.


1

У меня для MINGW, установленного с GIT, работало: .bash_profile положить в C:\Users\[user_name]

Это также каталог, где ~ указывает в оболочке (pwd).

Просто так :)


0

По линии @Koshmarr, но немного по-другому. Мой mingw64, скачанный с git-scm.com , будет загружаться /c/Users/[user-name]при запуске. Все же мой домашний двигатель (найденный cd ~) был в /h/. Я положил .bashrcи .bash_profileв мой ~диск, и все работало.

В .bash_profile:

    source ~/.bashrc;

Просто выясните, где MINGW считает дом и поместите его .bash_profileтуда.


0

Как настроить файлы инициализации MSYS Bash

В ОС Windows способ указания файлов инициализации, используемых Bash (т. Е. Profile, bash_profile, bashrc), отличается от того, который используется в ОС Linux.

Разница между ОС Windows и Linux заключается в структуре их файловой системы, что приводит к разнице в расположении файлов Bash и соглашениях об именах файлов.

Как настроить файлы инициализации MSYS Bash (например, profile, bash_profile и bashrc)

1) В WINOS откройте папку 'etc', расположенную здесь 'C: \ msys \ 1.0 \ etc \'. Заметка. вы должны увидеть файл 'profile' внутри папки 'etc'.

2) Сохраните файл без расширения файла (т. Е. При сохранении задайте тип сохранения как «.all files») с именем файла .bash_profile в «C: \ msys \ 1.0 \ home \ USERNAME». Заметка. в качестве префикса для имени файла используется точка (например, «.bash_profile»), как и следовало ожидать в настройке ОС Linux Bash

2) Сохраните файл без расширения файла (т. Е. При сохранении установите тип сохранения как «.all files») с именем файла .bashrc в «C: \ msys \ 1.0 \ home \ USERNAME». Заметка. в качестве префикса для имени файла используется точка (например, «.bash_profile»), как и следовало ожидать в настройке ОС Linux Bash

4) Откройте файл 'profile' в текстовом редакторе (возвышенный текст x - это хорошо). Примечание: расположение файла 'profile' - 'C: \ msys \ 1.0 \ etc \'

Внутри файла 'profile', выделите строку текста в конце файла (т.е. прокрутите вниз), вы должны увидеть строку теста, указывающую Bash на изменение ее текущего каталога на HOME (В MSYS HOME такой, как определено в файл профиля

CD $HOME

5) Перед строкой с текстом 'CD $ HOME' скопируйте следующий код - добавление этого скрипта в 'profile' скажет MSYS bash запустить bash_profile # ---------------- -------------------------------------------------- --------- # ИЗМЕНЕНО НАЧАЛО

# Note. -f is a flag in the file-test operator set of bash commands
#       that test whether file exists
echo '[i] INFO loading personal environment variables and startup   programs.... '
BASHRC="$HOME/.bash_profile"
if [ -f "$BASHRC" ]; then
  source "$BASHRC"
fi

#modified END
#---------------------------------------------------------------------------

6) Откройте файл 'bash_profile' в текстовом редакторе ( Sublime Text x - это хорошо) и конец файла (внизу файла)

7) Скопируйте следующий код в конец файла - добавление этого скрипта в «.bash_profile» скажет Bash запустить «.bashrc»

#---------------------------------------------------------------------------
#modified BEGIN

# Note. -f is a flag in the file-test operator set of bash commands
#       that test whether file exists
BASHRC="$HOME/.bashrc"
if [ -f "$BASHRC" ]; then
  source "$BASHRC"
fi

#modified END

# ------------------------------------------------- --------------------------

8) Хорошо, теперь давайте напишем небольшой скрипт внутри «.bashrc», чтобы увидеть, если «profile» вызывает «bash_profile» и если «bash_profile» вызывает «.bashrc».

8.1) Придумайте название команды, которую вы хотите создать. Давайте использовать «т», чтобы означать тест

8.2) Откройте терминал Bash и введите «t». Bash должен ответить «t: команда не найдена» - если он не говорит «t: команда не найдена», повторять 8.1 и 8.2, пока имя вашей команды не скажет «команда не найдена». Вы не хотите использовать псевдоним команды, назначенной bash BAD !, поэтому она должна быть «команда не найдена»

8.3) Хорошо, 't' дал мне 't: команда не найдена'. Теперь давайте напишем скрипт в '.bashrc'

8.4) В '.bashrc' напишите

# Use double quotes or bash will not write it
alias t="echo passed test"

8.5) Сохраните файл «.bashrc» в «C: \ msys \ 1.0 \ home \ USERNAME»

9) Почти там. Теперь перезапустите терминал Bash и обязательно закройте все ранее открытые терминалы Bash.

10) Введите в терминале «т». Следует ответить «пройден тест». Если нет, внимательно проверьте, правильно ли написан код (начните с проверки кавычек)

Некоторые примечания 1) «имя файла источника» совпадает с «. имя файла'

2) "" двойные кавычки допускают замену переменных на их содержимое одинарные кавычки не

3) $ HOME - это / home / USERNAME, так же как и ~ is / home / USERNAME

4) Функция всегда предпочтительнее псевдонима 2

Для более подробной информации см. Ссылку BASH

Я новичок в Bash. Так что нет гарантии, что я сделал это наилучшим образом.

Удачи!

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.