51

I know it's not best practice, but on my dev system I login as root. What's the equivalent of the .bashrc file so I can alias some functions?

I've found the /etc/bash.bashrc & /etc/bash.bashrc.local but I'm not sure where to plop my commands.

Running x86_64 SUSE.

thanks, mjb.

7 Answers 7

34

Probably best to put them in ~/.bashrc . It seems root doesn't get the normal ones by default in some distros, but you just cp /etc/skel/.bash* ~ to fix that.

3
  • There we go --- I didn't know about the skel directory. Do you happen to know if that's the default? If I edit it, will it work universally if the user doesn't have a ~/.bashrc ?
    – mbb
    Commented Apr 10, 2011 at 19:30
  • 2
    @mjb That's where new accounts get their default home directory. The useradd tool copies files from there. It is otherwise not used. You can add and alter stuff in there if you want every newly created user to have a different set of files. Think of it as the new user home dir template.
    – Keith
    Commented Apr 11, 2011 at 3:57
  • It's worth noting that the ~ in ~/.bashrc above points to the HOME of root which typically is set to /root after we logged in as root (sudo su). When logged in as root, use ~someuser to point to the home of someuser (/home/someuser). Commented Oct 31, 2021 at 11:41
28

How about the home dir of root that is /root/?

From some aspects, root is just another user (just better, and allowed more). root has a home dir, but it is not like the other users in /home/, but simply /root/ so root:s .bashrc is therefore /root/.bashrc

The ones in /etc is system specific settings for all users, including root.


Thanks to grawity to point out that you can use ~root points to the root home dir, regardless of where it is.

You can test that with

$> echo  ~root
/root

So even thou /root will work on 99% on the systems out there ~root is probably more portable and will probably work on 100%.

~root/.bashrc
4
  • 1
    Sometimes it is in /home. It's best to use ~root/.bashrc to refer to the file in root's homedir. Commented Apr 8, 2011 at 19:39
  • 8
    The root home directory isn't in /home because in some *nix systems, /home is on a separate partition from the system drive and is not necessarily mounted.
    – CarlF
    Commented Apr 8, 2011 at 19:40
  • You highlight why I was so confused --- there is no /root/.bashrc on this build.
    – mbb
    Commented Apr 10, 2011 at 19:29
  • probably work on 100%, i almots completely understand Commented May 24, 2017 at 22:34
4

Instead of using /root/.bashrc try using /root/.profile — it's the same thing, just a different name.

Also, if you are using su to get into root it may not be reading the .bashrc or .profile – just issuing su will not run the login scripts. try doing

su -
4
  • 10
    I beg to differ that a profile and bashrc are "the same thing".
    – slhck
    Commented Jun 27, 2012 at 7:39
  • Works for ttylinux ver 14.1 [boomslang] , Linux kernel: 2.6.38.1
    – GeoMint
    Commented Apr 3, 2018 at 12:51
  • @Slhck if they aren't the same thing, can you explain the differences? I'm a noob Commented Apr 20, 2018 at 17:35
  • @Gabriel superuser.com/questions/183870/…
    – slhck
    Commented Apr 21, 2018 at 15:21
2

TL/DR: /etc/bashrc

This file get's incorporated into your ~/.bashrc as well as that of all other users including root.

1

Normally the .bashrc file for the root user should be there: /root/.bashrc
If it is not the case, you can copy the 2 following files into /root, then you can edit the .bashrc file as you want.

cp /etc/skel/.bash_profile /root
cp /etc/skel/.bashrc /root
1

The similar topic: Why suse doesn't have .bash_profile or .bashrc for root user

SuSe use /etc/bash.bashrc file to manage the environment. It's not indicated to add configs on this file, becouse when the server get updated, you'll lost your personal configuration.

You can create an archieve named bash.bashrc.local on /etc. The system will load any instruction found on this file, and then search for the default conf and execute both.

# vi /etc/bash.bashrc.local

Have fun!

1
  • /etc/bash.bashrc for SuSE Linux PLEASE DO NOT CHANGE /etc/bash.bashrc There are chances that your changes will be lost during system upgrades. Instead use /etc/bash.bashrc.local for bash or /etc/ksh.kshrc.local for ksh or /etc/zsh.zshrc.local for the zsh or /etc/ash.ashrc.local for the plain ash bourne shell for your local settings, favourite global aliases, VISUAL and EDITOR variables, etc ... Commented Nov 19, 2015 at 13:35
0

I looked here because on my (64-bit) Slackware 14.2, logging into root does most certainly NOT source /root/.bashrc. It DOES source /home/user/.bashrc on loggin to user account. There is no /etc/bash.bashrc, or any other bash files in /etc. Nor is there any such directory as /etc/skel apparently, in slack.

1
  • It's always nice to see some links to documentation. Commented Nov 19, 2018 at 15:04

You must log in to answer this question.

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