SlackwareThis Forum is for the discussion of Slackware Linux.
Notices
Welcome to LinuxQuestions.org, a friendly and active Linux Community.
You are currently viewing LQ as a guest. By joining our community you will have the ability to post topics, receive our newsletter, use the advanced search, subscribe to threads and access many other special features. Registration is quick, simple and absolutely free. Join our community today!
Note that registered members see fewer ads, and ContentLink is completely disabled once you log in.
If you have any problems with the registration process or your account login, please contact us. If you need to reset your password, click here.
Having a problem logging in? Please visit this page to clear all LQ-related cookies.
Get a virtual cloud desktop with the Linux distro that you want in less than five minutes with Shells! With over 10 pre-installed distros to choose from, the worry-free installation life is here! Whether you are a digital nomad or just looking for flexibility, Shells can put your Linux machine on the device that you want to use.
Exclusive for LQ members, get up to 45% off per month. Click here for more info.
I know this sound very stupid but I got to ask because I am out of idea ,I use to be a mandrake user and suddenly I decide to change to slackware and I like what I found.
But I had been finding .bashrc in slackware and I can't seem to find it ,I try all the data base search command but there is just no .bashrc .So could any of you guy tell me what to do if I want to add some vauable to my bash file?
thanks
Click here to see the post LQ members have rated as the most helpful post in this thread.
Thanks man
That really help me a lot , as you guys said .bashrc only work for root and not for normal user ,I guess I got to go a long with .bash_profile for my normal user.I was trying to add some enveroment variable PATH to my bash file .In mandrake I can just open the .basrc in /home/~/.bashrc but in slackware the file didn't
didn't exist at all.My experience with linux is still in newbie level but I always thought that bash shell PATH file got to be kept in that .bashrc.I am having a lot of problem with slackware but this one is really worth it.I gave up mandrake and fedore althought it is less painful to operate.
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, After reading that file, it looks for ~/.bash_profile...
When an interactive shell that is not a login shell is started, bash
reads and executes commands from ~/.bashrc
So when you enter in runlevel 3 and then login, bash will read ~/.bash_profile,
but if you startx and then open a new terminal without -ls switch, then bash will read ~/.bashrc...
As gbonvehi said, if you want ~/.bashrc loads no matter if it is at login or when
open a new terminal, just create a ~/.bash_profile like this :
Code:
if [ -f ~/.bashrc ]; then
source ~/.bashrc
fi
So if there is a ~/.bashrc in your home directory it will be loaded at login or when
open a non-login shell
Something you might want to note is that BASH loads configuration/init files in roughly this order:
/etc/profile (global settings)
/etc/inputrc (global settings)
/etc/profile.d (global settings)
/etc/bashrc (global settings, but only read if "sourced" from another configuration file -- not created in slackware by default, but very useful for path settings, etc.)
~/.bash_profile (user-specific settings)
~/.bashrc (user-specific settings, but only read if "sourced" from another file, like Cedrik says)
~/.bash_login (user-specific settings to be executed upon login, such as greetings, etc.)
If you would like to apply settings from /etc/bashrc, it's best to put "source /etc/bashrc" at the BEGINNING of ~/.bash_profile or ~/.bashrc . This will load all the global variables from /etc/bashrc but allow your user-specific settings to override them. You can find more indespensible information on BASH and other cool Linux stuff at http://www.tldp.org/guides.html . Good luck with your new Slackware installation!
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, After reading that file, it looks for ~/.bash_profile...
When an interactive shell that is not a login shell is started, bash
reads and executes commands from ~/.bashrc
So when you enter in runlevel 3 and then login, bash will read ~/.bash_profile,
but if you startx and then open a new terminal without -ls switch, then bash will read ~/.bashrc...
As gbonvehi said, if you want ~/.bashrc loads no matter if it is at login or when
open a new terminal, just create a ~/.bash_profile like this :
Code:
if [ -f ~/.bashrc ]; then
source ~/.bashrc
fi
So if there is a ~/.bashrc in your home directory it will be loaded at login or when
open a non-login shell
Something you might want to note is that BASH loads configuration/init files in roughly this order:
/etc/profile (global settings)
/etc/inputrc (global settings)
/etc/profile.d (global settings)
/etc/bashrc (global settings, but only read if "sourced" from another configuration file -- not created in slackware by default, but very useful for path settings, etc.)
~/.bash_profile (user-specific settings)
~/.bashrc (user-specific settings, but only read if "sourced" from another file, like Cedrik says)
~/.bash_login (user-specific settings to be executed upon login, such as greetings, etc.)
If you would like to apply settings from /etc/bashrc, it's best to put "source /etc/bashrc" at the BEGINNING of ~/.bash_profile or ~/.bashrc . This will load all the global variables from /etc/bashrc but allow your user-specific settings to override them. You can find more indespensible information on BASH and other cool Linux stuff at http://www.tldp.org/guides.html . Good luck with your new Slackware installation!
--Dane
DaneM If you read this and can answer...
You state in your reply to the Order that the files are read.
But it is not being read on my system at all. /etc/bashrc
For the system it's as if the file didn't exist
If you can explain to me how to make the system read this file in the order you mentioned I appreciate it!
Thanks.
you can create .bashrc, but i don't think it will work. rather create/edit the .bash_profile file.
They are two different things:
.bashrc is for shell's that are NOT started as a login shell for that user ID, while
.bash_profile works only for shell's that are.
In some distributions they've setup things that login shell's will execute .bashrc too, but that is NOT the case in Slackware.
Of course, you can do that yourself, by including
Code:
test -r ~/.bashrc && . ~/.bashrc
as the first line of your .bash_profile (or .profile or .bash_login):
Quote:
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.
(from the bash man page), and
Quote:
When an interactive shell that is not a login shell is started, bash reads and executes commands from ~/.bashrc, if that file exists.
so normally it is either/or which of these files will be used.
DaneM If you read this and can answer...
You state in your reply to the Order that the files are read.
But it is not being read on my system at all. /etc/bashrc
For the system it's as if the file didn't exist
If you can explain to me how to make the system read this file in the order you mentioned I appreciate it!
Thanks.
[Rant]DaneM last posted to this thread FIFTEEN YEARS AGO. In future, please check the dates on the threads that come up in a search to avoid necroposting.[/Rant]
Anyway, on my system, .bash_profile contains:
Code:
$ cat .bash_profile
# ~/.bash_profile
#
if [ -f ~/.bashrc ]; then
source ~/.bashrc
fi
The first lines of .bashrc are:
Code:
$ cat .bashrc
# ~/.bashrc
#
# Source system-wide aliases and functions
if [ -f /etc/bashrc ]; then
source /etc/bashrc
fi
-- snip --
This results in .bashrc & /etc/bashrc running every time bash is started for my user. ~/bashrc contains additional settings for the individual user & /etc/bashrc is sourced by all users.
LinuxQuestions.org is looking for people interested in writing
Editorials, Articles, Reviews, and more. If you'd like to contribute
content, let us know.