Re: Some dumb questions born of frustration

Karl Wilbur <[email protected]>
Newsgroups gmane.linux.redhat.blinux.general
Message-ID <CAMuGJSn29HWYxccYb0ww2eEWMz9jQyeqevKW-rd1-b1Cs0L3zw@mail.gmail.com>
I wrote an entire article about this and posted it on my website about 10
years ago, but cannot find it now. :-( I went into great detail about the
differences between /etc/profile, /etc/bashrc, ~/.profile, ~/.bash_profile,
and ~/.bashrc. I also discussed when, how, and why they were used. I'll
keep looking for it and reply here with a link if I find it.

So, here's an answer from Stack Exchange the sums it up nicely:

.bash_profile is executed for login shells, while .bashrc is executed for
interactive non-login shells.

When you login[sic] (type username and password) via console, either
sitting at the machine, or remotely via ssh: .bash_profile is executed to
configure your shell before the initial command prompt.

But, if you’ve already logged into your machine and open a new terminal
window (xterm) then .bashrc is executed before the window command prompt.
.bashrc is also run when you start a new bash instance by typing /bin/bash in
a terminal.


[from Stack Exchange question:
http://apple.stackexchange.com/questions/51036/what-is-the-difference-between-bash-profile-and-bashrc
]

An instance of a interactive session would be something like this:
[karl@local-desktop] $ ssh [email protected]
[karl@local-desktop] $ ssh ~/bin/do-something.sh
.../home/karl/.bashrc is not loaded when bash starts on remote.server.net,
but /home/karl/.bash_profile is loaded for the interactive session.

An instance of a non-interactive command (or session) would be something
like this:
[karl@local-desktop] $ ssh [email protected] "~/bin/do-something.sh"
.../home/karl/.bash_profile is not loaded before
/home/karl/bin/do-something.sh is run on remote.server.net, but
/home/karl/.bashrc is loaded.

Personally, I preferred to keep directives that are for *Bash*
configuration (the way *I* expect Bash to *run*) in my ~/.bashrc. I would
put formatting, and "profile" information into the .bash_profile; including
things like how the command prompt should appear ($PS1). Since aesthetic
and user interface directives are insignificant to shell script execution,
I kept them separate. It helped me keep things a little more organized.

I have since given up and dumped it all in .bashrc because it seems that
the vast majority of software maintainers don't understand the nuance and I
felt like I was wasting a lot of time reworking every singe install script
for the various tools I implement.

Now, my ~/.bash_profile only loads my ~/.bashrc:
https://github.com/karlwilbur/castle/blob/master/home/.bash_profile

I have started using a ~/.bash_interactive include for directives that
should only be run for interactive sessions.
https://github.com/karlwilbur/castle/blob/master/home/.rc.d/bash_interactive

Please feel free to ask any more questions about this. I'm glad to help
explain what I can.


--
Karl Wilbur
513-322-2481
[email protected]

On Thu, Oct 27, 2016 at 7:56 AM, Jeffery Mewtamer <[email protected]>
wrote:

> Okay, created a single line .bash_profile with the source ~/.bashrc
> line and it works. Then, since both files are, for me at least, single
> liners, I tried .bash_profile with just the export PS1='\$' and no
> .bashrc and got the same result. For such minimalist configs, is there
> any reason to prefer a separate .bashrc?
>
> And now that I don't have to manually type PS1=$ everytime I switch to
> a fresh terminal, is there any way I could add a short indicator of
> the active terminal before the $? Something along the lines of tty2$
> when I'm using tty2 and tty3$ when I'm using tty3.
>
> --
> Sincerely,
>
> Jeffery Wright
> President Emeritus, Nu Nu Chapter, Phi Theta Kappa.
> Former Secretary, Student Government Association, College of the Albemarle.
>
> _______________________________________________
> Blinux-list mailing list
> [email protected]
> https://www.redhat.com/mailman/listinfo/blinux-list
>

_______________________________________________
Blinux-list mailing list
[email protected]
https://www.redhat.com/mailman/listinfo/blinux-list
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.