The Jargon File is still a great resource for this kind of search and if you like these background stories like me you might also enjoy reading all of it.
> [Unix: from `runcom files' on the CTSS system 1962-63, via the startup script /etc/rc] Script file containing startup instructions for an application program (or an entire operating system), usually a text file containing commands of the sort that might have been invoked manually once the system was running but are to be executed automatically each time the system starts up. See also dot file, profile (sense 1).
The canonical location of the jargon file is at jargon-file.org, which contains not just ESR's jargon-file, but also pre-ESR versions. Apparently he ripped a lot out that represented LISP and ITS culture, and spun some of the political aspects of it to conform more to his taste.
Because we didn’t have any Unix systems at MIT while that collection of terms was assembled. I think the first unix system I saw at the LCS was around 80 or 81.
The gnu project was developed on a vax running Unix that somehow had been installed at the AI lab. Nobody used it so RMS decided to use it as a development machine. We had our own OSes, languages, and hardware and at that point in time Unix offered significantly less power for a large investment of effort.
I think it was probably RSTS/E. There were other pdp-11s like the KTV or XGP machines. There might have been Unix machines someplace (MIT is a big place) I just meant that never saw any, and in particular around where quux was assembling the jargon file.
Nope. It ran an in-house OS named "Delphi". There was a PDP 11/45 at LCS and a PDP 11/40 in building 38 used to teach 6.031 (the predecessor of 6.001).
My rule of thumb: shell-independent commands go to .profile, those ran at boot time go to .bash_profile (or shell-appropriate) which then sources .profile, those ran each time you open a new shell go to .bashrc (or shell-appropriate).
The state machines for what calls what when is so insane and stupid. Just have one file and set env vars for “is a TTY” “is SSH” etc. It’s crazy that they kept making the calling conventions so complicated instead of thinking about the existence of “if statements”.
After using bash since ~1993 I switched cold-turkey to fish around a year ago. In retrospect, one of the most enjoyable aspects has been how little I need to customize since it does the right thing out of the box and I can just free up all of the brain capacity I used to spend on the intricacies of the best way to configure bash.
That was exactly my experience. The defaults are so ergonomic, and the configuration scripting so utterly sane, that I have no desire to go back to bash.
For example, do you want to make an autoloaded function named "foo" that comes into existence the first time you call it? Write a file named ~/.config/fish/functions/foo.fish, and inside it define a function named "foo". There - done.
Follow this pattern to make a function named "fish_greeting", and it will run every time you launch a new fish shell. Want to make a custom prompt? Write a function named "fish_prompt". Decide you want one of those fancy prompts where the timestamp is displayed on the right side of your terminal window? Make a "fish_right_prompt.fish" file and put in it:
function fish_right_prompt --description 'Write out the right prompt'
set_color 666666
date +'%Y-%m-%d %H:%M:%S'
set_color normal
end
After years of customizing bash (and later zsh), this is a breath of fresh air.
Catalina finally pushed me over the hump of switching to Fish last month. It’s great! I was dreading porting my Bash config, but it turned out almost nothing needed to be ported because Fish does so much for you.
Actually, they are fairly simple. A case in point is the basic Korn shell behaviour.
* There are two scripts run by a login shell, $HOME/.profile and /etc/profile .
* These scripts set up environment variables and other things (e.g. umask) to be inherited by the whole login session.
* They, specifically, optionally set an ENV variable whose value names a third script that is run by every interactive shell, including the interactive login shell.
That's exactly three scripts: one for the system administrator and another one for the user to set up login-session-wide stuff, and one for the user to set up this-interactive-shell stuff (such as the shell variables for fancy prompts, completion settings, command-line editing stuff, useful interactive shell aliases, and whatnot). They are always in the same order. And they are simply based upon two things: whether the shell is a login shell, and whether the shell is an interactive shell.
The C shell mechanism is similarly simple, on its own.
The complexity mainly comes from the fact that the Bourne Again shell and the Z shell, amongst others, have multiple mechanisms mixed together and extensions. They look for scripts that are specifically in their own shell languages rather than potentially shared with other shells; .zprofile and .bash_profile instead/ahead of .profile , for example. They have extra scripts that mirror the C shell way of doing things; .zlogin, .zlogout, .bash_login, .bash_logout, .bashrc, and .zshrc, for example. They have idiosyncratic and non-strictly-standard ways of deciding what constitutes an interactive shell. They have mechanisms for disabling the extensions, and ways to come up in alternative not-strictly-conformant sh-compatible modes.
I just symlink the two, the distinction is mostly useless and annoying, because random things will invoke login shells (or not) and even if behavior was consistent, its really not that useful to begin with.
My first introduction to .___rc files was with irix back in college. Somehow I got it into my head that it stood for Resource Chest. I probably just made it up.
I've never heard that before, but I like it. and next time somebody is asking this question, I'll probably remember it and repeat it as if it were fact.
I was always thinking it was mean something around Resource or Configuration ... For what it means it's just off how is used now, for example, the common `.prettierc` is a JSON configuration object, just that. I feel like culturally the `rc` suffix means Configuration.
Maybe unlikely but maybe still, this is one of those things how language evolves where a word/suffix has an original meaning that is lost in the practical use day today.
Well, at least! I had no idea the meaning behind it, and it amazes me how I never think it about it.
Funny, I came across this very same question/similar answer yesterday in "Build Awesome Command-Line Applications in Ruby 2" by David Copeland (Pragmatic Programming, 2013): [0]
"The .rc Suffix (Origin Story)
Most UNIX commands use the suffix rc for the name of configuration files. According to Wikipedia, this extension isn’t an acronym for “resource configuration” or “runtime configuration” but comes from a command called RUNCOM.
RUNCOM was created by Louis Pouzin for the Compatible Time-Sharing System (CTSS), which was one of the first time-sharing operating systems. RUNCOM was used to execute a series of commands in succession—a precursor to what we now call a shell script.
He is even credited with coining the term shell, as he describes in a post on the Internet from 2000 on the origins of the shell:
'After having written dozens of commands for CTSS, I reached the stage where I felt that commands should be usable as building blocks for writing more commands, just like subroutine libraries. Hence, I wrote “RUNCOM”, a sort of shell driving the execution of command scripts, with argument substitution. The tool became instantly most popular [sic], as it became possible to go home in the evening while leaving behind long runcoms executing overnight.
Without being invited on the subject, I wrote a paper explaining how the Multics command language could be designed with [the] objective [of using commands somehow like a programming language]. And I coined the word “shell” to name it.'
Although RUNCOM (and CTSS) has long-been retired from regular use, its legacy lives on both as the name for user-specific configuration files and as the basis for the UNIX start-up scripts, typically located in /etc/rc.d."
I go back and forth on my feeling about terseness, abbreviations and 3 letter acronyms. 3LA are almost always annoying, specially since they overlap so much.
In source code sometimes a longer name really helps, but then some people take it to the extreme and make everything look pretty ugly and tedious to work with.
In this case, I guess it would not had been that bad to name the files `.bash.runcommands`. `.bourne-again-shell.run-commands`: maybe too much :-)
I think the issue is that abreviations and acronyms are mostly ok only when its meaning is so widespread it's unmistakable - but then again, an acronym never reaches that state at birth.
It's plausible that a user on stack exchange who has known of .bashrc, .kshrc, and others, for 10 years has never heard of google and doesn't know how it works? If it were, the user _probably_ learned of google intervening ten years since the question was asked.
Not when the headlined article is a Q&A WWW site, with the answer on the very same page, below the question. You are looking right at a question and answer that tells you this stuff, so you should use Google instead. seems rather implausible, or at least daft.
I do wonder if it's time for some tiny social cost to not even doing a cursory google search, though. It couldn't be easier, yet all sorts of people's time is wasted on places like r/learnspanish by people asking "what's pero vs perro?"
> yet all sorts of people's time is wasted on places like r/learnspanish by people asking "what's pero vs perro?"
Yet, if they felt like it was a waste of time they wouldn't bother answering those people at all. It's not like anyone is forced to respond to someone asking a question with an easily searched for answer. But people choose to, so they obviously must feel like it's a good use of their time.
Agree. Also where do people think Google gets its answers? It comes from stuff like that. There will be many more people that Google than don't.
Reminds me a lot of Googling some programming question, it pointing me at a highly upvoted Stack Overflow question, only to see comments on the question like "voting to close. do some research first" or (also often) some moderator has closed it as "not useful" or something like that.
Because people in general would prefer to shit on the person asking to feel better about their own mighty intelligence and preserve ego. That said, I have to admit there are some pretty low effort questions around on Quora that sometimes I wonder if they're just generated by a bot actually. The whole 'explain what the difference between dog vs dogs is' type questions do leave me perplexed
>explain what the difference between dog vs dogs is'
To be fair, I actually made a search like that recently and was directed to quora which actually had a question and answer related to the dogs I was searching for.
People don’t want to read a dusty answer, people want to engage with other living people. You may as well say drop every classroom Spanish course because those people should read books instead and stop wasting everyone’s time.
And the people answering aren’t always the same people; it’s a useful thing to practise explaining something, so it’s useful to have a rolling set of basic questioners to write answers for. It’s not wasted time, it’s beneficial time.
The self-centeredness of encumbering others with trivial questions just because you want it "fresh" instead of even attempting to google it is what I'm talking about.
Also, let's not compare <pero vs perro> to <learning spanish in a classroom>. If you have a teacher/mentor in front of you, sure, cache-hit them with your easily googleable questions. But when you spend 30 seconds making a Reddit submission to save you 3 seconds of googling, what exactly are you accomplishing?
It also does a disservice to the person always asking these questions who never learns to be resourceful. In my ideal world, LMGTFY is just some tough love. Like, now everyone has google in their pocket and I only see an uptick in trivial questions. And I think it's because we baby everyone with the mentality seen in your comment instead of training people to be self-reliant.
It's like when people ask what `const [a, b] = [1, 2]` in #javascript instead of just... trying it. Just do it. See what happens. That's how we need to be training people to learn, not baby them.
> when you spend 30 seconds making a Reddit submission to save you 3 seconds of googling, what exactly are you accomplishing?
You might have seen someone say "welcome to learning Spanish, if you have any questions just ask!" and simply believed them instead of thinking it was a sperglord den where people were waiting to jump on you for not asking superior enough questions, for one thing. The sidebar of /r/learnspanish even says "If you have a question about anything Spanish-language related, ask and we'll help the best we can!".
For another, when learning something new you're pushing the edge of what you're capable of - what you want is a direct answer to just this sticking point, not a video of "5000 words every beginner MUST know!" or a page of "Twenty False cognates" which might have the answer, or a page of "Introductory Spanish" which is an advert for a training course in another country which isn't even running and hoping you can divert your already-strained attention to digging an answer out of a lot of unrelated stuff; asking a narrow, focused question on just the thing you need might be as much as you can manage. And as you say, you would ask a teacher, you would ask a friend, you would ask an IRC/Discord/etc chat, why would you assume you can't just ask Reddit?
I get it, /r/powershell is full of "how do I get rid of {Name=bob} in my output" because they don't understand the object pipeline, and I answer the ones I want to answer and ignore the ones I don't want to; it simply isn't a sub dedicated to catering "interesting questions for me", and the people who are learning powershell are mostly people with no programming background whatsoever, they're already lost in a pile of syntax, terminology, new tools, grandfathered-in-weird-behaviour, ancient Windows behaviour, filesystem name limitations, web character encoding weirdness, and just can't deal with stopping their five line script to take a course in object orientation before getting any further feedback.
> Like, now everyone has google in their pocket and I only see an uptick in trivial questions. And I think it's because we baby everyone with the mentality seen in your comment instead of training people to be self-reliant.
Agile programmer "Uncle" Bob Martin gave a talk in 2016[1] where he covers the history of programming, from 1 programmer in 1945, through millions in 2016, and estimates a growth rate of number of worldwide programmers doubling every 5 years - that is, every 5 years for the past 70 years, most of the programmers in the world have <6 years experience, continuous state.
You should expect that "everyone has Google in their pocket" leads to an uptick in simple questions simply through growth of people with smartphones, because most people who have a smartphone didn't grow up with the internet, didn't grow up with Google, likely isn't their main hobby or interest, haven't had one (with lots/unlimited mobile data) all that long.
I checked in my copy of the jargon file (which I downloaded in August 2001) and got:
rc file /R-C fi:l/ n.
[Unix: from `runcom files' on the CTSS system 1962-63, via the startup script /etc/rc] Script file containing startup instructions for an application program (or an entire operating system), usually a text file containing commands of the sort that might have been invoked manually once the system was running but are to be executed automatically each time the system starts up. See also dot file, profile (sense 1)
> [Unix: from `runcom files' on the CTSS system 1962-63, via the startup script /etc/rc] Script file containing startup instructions for an application program (or an entire operating system), usually a text file containing commands of the sort that might have been invoked manually once the system was running but are to be executed automatically each time the system starts up. See also dot file, profile (sense 1).
0. https://www.eps.mcgill.ca/jargon/jargon.html#rc%20file