MinGW Bash profile
I use MinGW on Windows 7. I have a .bashrc
with some aliases in it. The file is in my home folder which is where MinGW starts me in, so it also believes that the folder is my home folder. It does not load the contents of the folder automatically. I have to run the bash
command to get the aliases to work.
I have tried renaming it to .bash_profile
. This only made things worse as it didn't load automatically and also didn't load when I ran bash
manually.
How can I fix this problem?
Solution 1:
bash
is probably getting started as a login shell, in which case it doesn't read .bashrc
automatically. Instead, it reads .bash_profile
. From the Bash manual:
So, typically, your `~/.bash_profile' contains the line
if [ -f ~/.bashrc ]; then . ~/.bashrc; fi
after (or before) any login-specific initializations.
So in summary, create a .bash_profile
file in your homedir, and add the line quoted above.
If your bash
is actually getting invoked as sh
, then you'll need to use .profile
instead of .bash_profile
(see the "Invoked with name sh" section of the Bash manual link above).
Solution 2:
I am running Windows XP and had the same problem. I found HOWTO Create an MSYS Build Environment.
This is the important line:
To help identify the runtime build and the current working directory, the following can be added to the ~/.profile
file.
In MinGW shell, I created .profile
:
cd ~
touch .profile
I used Notepad++ to edit it as a Unix format text file named .profile
and saved it in my home directory, C:\MinGW\msys\1.0\home\Your_Username_Here\.profile
Then I added my alias and saved:
alias n='nano -w'
Then I fired up the MinGW Shell shortcut from my start menu and hurray, it worked! nano with no text wrapping.
I hope this helps you.
Solution 3:
For me for MINGW installed with GIT, worked: .bash_profile put in C:\Users\[user_name]
This is also the directory where ~ points to in shell (pwd).
Just like that :)
Solution 4:
I did not find the .bash_profile to work for me (it wasn't being read), so I took the .profile approach and put within it:
exec bash
This replaces my current shell with a fresh start of bash, which read my .bashrc
I'm thinking that using a .profile suggests that sh is used at login, not bash.