When it comes to setting up your command line environment in Bash, there are two conditions by which Bash decides which files to read at startup.

The first is whether your shell is running interactively. A session runs interactively when the standard streams are actually connected to a terminal. This condition holds true most of the time; the exception is when you run Bash with the '-c' flag:


The second condition is whether your shell is declared as a login shell. Bash processes spawned from login or started with the '-' or '--login' flags believe they are login shells.

Here's the standard behavior: login shells always look for the bash configuration files with 'profile' in the name, in this order: /etc/profile, ~/.bash_profile, then ~/.bash_login and lastly ~/.profile. When login shells exit, they read ~/.bash_logout.

This command works across all unix platforms, whether it’s Mac OS X, Linux, FreeBSD, or whatever, and it’s always reported back the same. For the vast majority of Mac OS X users, you will be using the Bash shell by default, which is both the standard in all recent versions of OS X and also one of the easier to use shells out there. I have never used a Mac before. I recently went to an Apple store and tried to open a shell to try it out. But, I was not able to open a shell - no shortcut for it, not right-click-menu entry, nothing. How do you open a shell on a Mac? Does it even have a shell? I was assuming as Mac is a descendant of Unix, there would be something similar.

Non-login shells read ~/.bashrc, and non-interactive shells try not to read any files. This is essential because, when running autonomously, a shell's standard streams might be redirected, and aliases or environment variables could confound running scripts.

Bash - Launches the Bourne-Again SHell, an sh-compatible shell that incorporates useful features from the Korn and C shells (ksh and csh). Syntax bash options Options -c string Commands are read from string. If there are arguments after the string, they are assigned to the positional parameters, starting with $0.

Bash Shell For Mac High Sierra

Well-behaved scripts or programs that use Bash don't attempt to load .bashrc, but scp and rcp aren't as well-behaved. They source .bashrc and will fail spectacularly if any part of .bashrc prints to the standard out. This is why you should keep any output-producing commands in the files read by login shells (.bash_profile and the like).

Mac Shell Commands


On Linux, it is customary for terminal emulators not to declare their interactive shell processes as login shells. It is assumed that by running the emulator program, you have already logged in. But if you want to share declarations and/or aliases across all interactive shells (login or not), you should put this in your .bash_profile:

Install Linux On Old Macbook

Bash Shell For Mac

This makes non-login shell customizations available to login shells.

Unfortunately, this customary behavior isn't adhered to by Mac OS X. In the terminal emulator packaged with OS X (Terminal.app), new windows are by default opened with login shells. This can be remedied by accessing the Preferences window and, under Startup, specifying that shells should open with /bin/bash and not a login shell.

Bash shell for mac

In summary: login shells read files like *profile*, non-login shells read ~/.bashrc, and you should fix Terminal.app.

Bash Shell For Mac Catalina

Bash is a shell originally written by Brian Fox at the Free Software Foundation in 1988. It is the default shell on Linux and Mac OS X, and has even made the jump to Windows via Cygwin.