5

Newish to Ubuntu so forgive if I word things oddly... All I really want to do is have my ls command changed to ls --color=always -ragX

Got that solved... Alias will do nicely. Now, to have that run every time I log in (SSH in from Putty to the Command line) I created .bashrc in my home directory and entered

alias ls='ls --color=always -ragX'

saved, exited, and came back in

typed vi

looks like the .bashrc file is not running? NOW what?

1
  • You created a .bashrc file? What happened to the default one? Or did you create it elsewhere?
    – muru
    Commented Mar 14, 2015 at 0:01

4 Answers 4

7

See https://www.gnu.org/software/bash/manual/bashref.html#Bash-Startup-Files

When Bash is invoked as an interactive login shell, or as a non-interactive shell with the --login option, it first reads and executes commands from the file /etc/profile, if that file exists. After reading that file, it looks for ~/.bash_profile, ~/.bash_login, and ~/.profile, in that order, and reads and executes commands from the first one that exists and is readable. The --noprofile option may be used when the shell is started to inhibit this behavior.

Note, no mention of ~/.bashrc above.

When an interactive shell that is not a login shell is started, Bash reads and executes commands from ~/.bashrc, if that file exists. This may be inhibited by using the --norc option. The --rcfile file option will force Bash to read and execute commands from file instead of ~/.bashrc.

Check your terminal application's preferences to see if it launches a login shell or not.

Alternately, you can add this to your ~/.bash_profile

[[ -f ~/.bashrc ]] && . ~/.bashrc
3
  • 1
    IIRC the default .profile in Ubuntu sources .bashrc.
    – muru
    Commented Mar 14, 2015 at 3:26
  • I ssh in and none of these files seem to be run. However, when I invoke bash after ssh'ing in, it does load the files correctly. Can't figure out what the problem is. Commented Aug 14, 2017 at 16:07
  • What's your login shell in /etc/passwd? Commented Aug 14, 2017 at 16:59
0

A few things to note:

  1. .bashrc files don't "run", so if you look in a list of processes, you won't see it anywhere, and that's fine.

  2. bash reads the bashrc file when it starts up, so if you make changes to your bashrc file, they won't take effect until the next time you run bash. When you're testing edits to your bashrc file, you can easily see the changes just by running bash again (eg, open the terminal and then type "bash"). The changes will also get picked up when you log out of Ubuntu and then log back in (locking your screen or going into standby won't work, but logging out or rebooting will work).

  3. Your .bashrc file has to be in your home directory. You can verify this by editing the file like vi ~/.bashrc rather than just vi .bashrc

0

As muru did already say there should per default (after first login) be a .bashrc in your home directory /home/youloginname

To protect your existing bashrc please create a copy with the following command.

cp ~/.bashrc ~/mybashrc.backup

After this you can restore the default .bashrc , to do this remove first the existing one and then copy it over from the systemwide bashrc. If not already done setting the correct permission to the file.

rm ~/.bashrc
cat /etc/bash.bashrc > ~/.bashrc
chmod 644 ~/.bashrc

After this make your changes to the .bashrc file in your home. When you are done you dont need to logoff or logon or even restart. Simply reload the bashrc with the following command

source ~/.bashrc

That should make it....

0

In Ubuntu bash login works the same as in other Distros.

Once you add the alias in your .bashrc like you did using:

alias ls='ls --color=always -ragX'

To have ls running automatically every time you log in you can simply add it to the last line of your .bashrc file.

If you do not see the output of ls or ls --color=always -ragX at login there is probably an error in your .bashrc file.

1
  • This is not true.
    – jdhao
    Commented Sep 29, 2019 at 6:54

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .