126

I feel stupid asking, but I can't seem to find the answer to this anywhere. I'm trying to follow these instructions to edit my bash prompt, but there is no .bashrc in either my user directory (~/.bashrc), or in my home directory, or in the main file system directory.

There is no .bashrc in /etc/ (there is a bash.bashrc, however).

Do I create a .bashrc file in my user or home directory? Is there a better, more recent set of instructions for modifying the bash prompt?

  • 2
    You do not need to find/edit .bashrc in /etc/. There should be a .bashrc file in your home directory. Try to open/edit ~/.bashrc. But before that I should also ask if you are new to Linux. If you are new to Linux, then I can post detailed instructions here. – Ankit Apr 28 '12 at 15:44
  • 2
    All of the above answers recommend putting your aliases in .bashrc, but you should put them in .bash_profile Edit To clarify, don't create a .bashrc if it's just for this, create or modify ~/.bash_profile – Louis Maddox Jul 9 '14 at 13:33
  • 2
    @Louis Defining aliases in .bash_profile is wrong. In Ubuntu .profile (which runs for login shells) sources .bashrc when it's an interactive bash shell. So putting aliases in .bashrc (or .bash_aliases, sourced in .bashrc) defines them in all interactive bash shells. Aliases in .bash_profile yields this problem, and others. See this, that, this post, and the default ~/.bashrc's comments recommending putting aliases there or in .bash_aliases. – Eliah Kagan Apr 8 '15 at 18:50
  • 2
    Oh wow, I'm very sorry if I've misled anyone. I wrote that comment just a few months into using Linux. Peculiarly I do now have them in .bashrc and sourced my .bashrc in .bash_profile with code copied from this SuperUser answer ("Get the aliases and functions"). Thanks for correcting these commonly viewed questions Eliah, really nice answer here! – Louis Maddox Apr 8 '15 at 18:56
  • Answer for similar question for Windows is here Git for Windows: .bashrc or equivalent config files for Git Bash shell – Michael Freidgeim Feb 16 '16 at 23:45
147

Don't forget it is a hidden file inside your home directory (you would not be the first to do a ls -l and thinking it is not there).

Do a:

ls -la ~/ | more

There should be a .bashrc on the first page. If not just create it with:

vi ~/.bashrc

and add in the lines you need to add into it.

Permissions of my .bashrc are:

-rw-r--r--  1 discworld discworld  3330 Mar 10 16:03 .bashrc

(chmod 644 .bashrc to make it rw r r).

| improve this answer | |
  • 3
    That was exactly it -- hidden file, and I didn't think to look beyond the obvious. Thanks -- maybe this will help other shmucks like me as well. :) – JeanSibelius Apr 28 '12 at 15:21
  • 1
    I don't seem to get the sudo... line, isn't this touch ~/.bashrc? – lgarzo Apr 28 '12 at 15:22
  • @Rinzwind I think that line still has an extra dot in the filename. – lgarzo Apr 28 '12 at 15:27
  • No, there was no extra dot! I deny there to have been 2 errors in that command! :=D – Rinzwind Apr 28 '12 at 15:29
  • Sorry, my bad! :P – lgarzo Apr 28 '12 at 15:31
32

User specific, hidden by default.

~/.bashrc

If not there simply create one.

System wide:

/etc/bash.bashrc
| improve this answer | |
16

There is a .bashrc in every user's home folder (99.99% of the time) as well as one system-wide (which I don't know the location of in Ubuntu).

The quickest way to access it is nano ~/.bashrc from a terminal (replace nano with whatever you like to use).

If this is not present in a user's home folder the system-wide .bashrc is used as a fallback as it is loaded before the user's file. You could simply copy and paste it (with root permissions of course), but a .bashrc is not entirely essential (it may be required to make things work. I haven't found out) at a user level as it mostly overrides the system-wide one with user-specific tweaks. You could write your own though.

The main components for that users may tweak are PS1 (the Bash prompt defaults to display user@localhost:pwd $) and aliases as well as setting a color prompt and maybe PS2 (busy state message).

| improve this answer | |
11

Use gedit ~/.bashrc, it will allow you to modify ~/.bashrc using gedit.

| improve this answer | |
  • This is so much easier, thank you! – Kourosh Jun 19 '19 at 16:53
6

It is hidden because of the '.' it starts with.

list it with

ls -al

or enable "show hidden files" under the view menu in nautilus (Ctrl-H will also do the trick).

You can edit it with your favorite text editor from your home directory e.g.

cd

to go to your home directory then:

emacs .bashrc

| improve this answer | |
  • 1
    You can even just use ls -a – Paul Jones Dec 17 '19 at 16:35
2

If .bashrc is not in your home folder, even after you list the hidden files, you can copy it from:

/etc/skel/.bashrc
| improve this answer | |
2

Use nano ~/.bashrc to open and edit the .bashrc file. (This will create the file if it does not yet exist)

| improve this answer | |
  • 3
    You don't need sudo to edit your own ~/.bashrc – muru Mar 13 '17 at 11:57
1

if not in home directory, you can just copy from /etc/bash.bashrc, and make it source for your terminal, by typing in your terminal source .bashrc from your home directory after copying.

| improve this answer | |
0

If you use encryption and work from the command line you might not see it as one need to mount the real home-dir first (in contrast to in the graphical UI where this is done automaticallu) by the command:

ecryptfs-mount-private

(I had the same question and stumbled upon this question; but found my answer in the readme instead)

| improve this answer | |

Not the answer you're looking for? Browse other questions tagged or ask your own question.