34

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

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

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

6 ответов6

44

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

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

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

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

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

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

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 из меню «Пуск» и ура, все заработало! Нано без переноса текста.

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

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. Так что нет гарантии, что я сделал это наилучшим образом.

Удачи!

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .