Профіль MinGW Bash


35

Я використовую MinGW в Windows 7. У мене є .bashrcдеякі псевдоніми в ньому. Цей файл знаходиться в моїй домашній папці, де починається запуск MinGW, тому він також вважає, що ця папка є моєю домашньою папкою. Він не завантажує вміст папки автоматично. Я повинен виконати bashкоманду, щоб змусити псевдоніми працювати.

Я спробував перейменувати його на .bash_profile. Це тільки погіршило, оскільки воно не завантажувалось автоматично, а також не завантажувалось, коли я бігав bashвручну.

Як я можу виправити цю проблему?


Вибачте, шлях повинен був бути: C: \ MinGW \ msys \ 1.0 \ home \ Your_Username_Here \ .profile

Відповіді:


46

bashймовірно, починається як оболонка для входу, і в цьому випадку вона не читається .bashrcавтоматично. Натомість він читає .bash_profile. З посібника Bash :

Отже, як правило, ваш `~ / .bash_profile 'містить рядок

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

після (або раніше) будь-яких ініціалізацій, що стосуються входу.

Отже, підсумовуючи, створіть .bash_profileфайл у своєму homedir та додайте рядок, цитований вище.

Якщо вас 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
Багата Гомолка

1
@KurToMe Я відредагував, щоб висвітлити вашу ситуацію.
jjlin

8

У мене працює Windows XP і була така ж проблема. Я знайшов, як створити середовище побудови 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 зі свого меню запуску та ура, це спрацювало! нано без упаковки тексту.

Я сподіваюся, що це вам допоможе.


Те, що ви говорите, не jive ... ~ означає домашній каталог користувачів ... тоді ваше твердження c: \ MinGW \ msys \ 1.0 \ home ... що не має сенсу, якщо тильда є посиланням на додому USERS ... у Windows, що% userprofile% ...
Едді B

2

Я не знайшов .bash_profile працювати для мене (його не читали), тому я застосував .profile підхід і вклав його:

exec bash

Це замінює мою поточну оболонку свіжим початком bash, який читав мій .bashrc

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


1

Для мене для MINGW, встановленого з GIT, працював: .bash_profile поставлений C:\Users\[user_name]

Це також каталог, де ~ вказує на shell (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 (тобто профіль, bash_profile, bashrc), відрізняється порівняно з ОС Linux.

Різниця між ОС Windows та Linux полягає в їх структурі файлової системи, що призводить до різниці в розташуванні файлів Bash та умовах іменування файлів.

Як налаштувати файли ініціалізації MSYS Bash (тобто профіль, bash_profile та bashrc)

1) У WINOS відкрийте папку "тощо", розташовану тут "C: \ msys \ 1.0 \ тощо \". Примітка. ви повинні побачити файл "профіль" всередині "тощо" папки.

2) Збережіть файл з розширенням без файлів (тобто, коли ви зберігаєте, встановіть збереження як тип у ".all файли") з ім'ям файлу ".bash_profile" на "C: \ msys \ 1.0 \ home \ USERNAME". Примітка. Існує крапка як префікс для імені файлу (наприклад, '.bash_profile'), як ви очікували в налаштуваннях Bash Linux OS

2) Збережіть файл з розширенням без файлів (тобто, коли ви зберігаєте, встановіть збереження як тип на ".all файли") з ім'ям файлу ".bashrc" на "C: \ msys \ 1.0 \ home \ USERNAME". Примітка. Існує крапка як префікс для імені файлу (наприклад, '.bash_profile'), як ви очікували в налаштуваннях Bash Linux OS

4) Відкрийте файл «профіль» у текстовому редакторі (піднесений текст x хороший) Примітка. Розташування файлу «профіль» - «C: \ msys \ 1.0 \ тощо \»

Всередині файлу "профілю" перейдіть до рядка тексту в кінці файлу (тобто прокрутіть донизу), ви повинні побачити рядок тесту, який вказує Bash на зміну поточного каталогу на HOME (У MSYS HOME, як визначено в файл "профілю")

CD $HOME

5) Перед рядком з текстом "CD $ HOME" скопіюйте наступний код - додавши цей скрипт у "профіль", MSMS 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' у текстовому редакторі ( Піднесений текст 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) Придумайте ім'я команди, яке ви хочете створити. Давайте використовувати 't' для позначення тесту

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) Введіть термінал 't'. Він повинен відповісти "пройшов тест". Якщо ні, уважно перевірте, чи правильно написаний код (почніть з перевірки лапок)

Деякі примітки 1) "ім'я вихідного файлу" те саме, що ". ім'я файлу "

2) "" подвійні лапки дозволяють замінювати змінні змістом його одиничні лапки не мають

3) $ HOME є / home / USERNAME те саме, що ~ is / home / USERNAME

4) Функція завжди віддається перевазі псевдоніму 2

Більш детально див. Посилання BASH

Я новачок у Bash. Тож немає гарантії, що я зробив це найкращим чином.

Удачі!

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.