On linux there's usually a global bashrc file (/etc/bash.bashrc
or /etc/bashrc
). On FreeBSD however bash doesn't seem to support this feature. What's the best way to add a system-wide bashrc then?
5 Answers
You can try with strings
and see which paths are included in the binary.
Anyway, in RHEL5 the only system-wide config file for bash is /etc/profile
and there is no /etc/bashrc
nor others.
-
Yes,
/etc/profile
is also a systemwide initialization file (same on freebsd). But it's executed for login shells, and not interactive shells. Anyway, the trick withstrings
is great! Aug 25, 2010 at 13:35 -
You are correct for
/etc/profile
, but even in RHEL5 (bash 3.2.25) there is no trace of any other bash initialization file in/etc/
. Aug 25, 2010 at 13:50
There appears to be no common startup file for interactive non-login shells for Bash on FreeBSD. You will have to add something like:
. /etc/bash.bashrc
to the beginning of each user's ~/.bashrc
.
This one had me thinking for a bit, so I checked out the bash installations I have on my solaris (9 and 10) and FreeBSD servers. Turns out, that the only place that bash looks for bashrc is ~/.bashrc.
The thing is, this isn't just a Solaris or FreeBSD thing. I checked the man page and the only profile stuff checked is the /etc/profile or the various files in the user's home dir. So, the likely culprit is distro customization. So, on the linux servers -- Centos, in this case --
From ~/.bashrc :
# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
-
1The default
~/.bashrc
also has a section like this on Debian 7, although/etc/bash.bashrc
is called even if that section is left out. Dec 8, 2014 at 19:33
@dan-andreatta suggestion to use strings
was helpful:
$ strings $(which bash) | grep profile
~/.profile
noprofile
/usr/local/etc/profile
~/.bash_profile
We can see that for FreeBSD, you need to update and/or create /usr/local/etc/profile
instead of modifying /etc/profile
Check /usr/local/etc/ directory and link it with /etc/ if needed.