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