I guess I’m going to have to put together a master guide from all these entries. Here’s something else you should do:
brew install coreutils findutils gnu-tar gnu-sed gawk gnutls gnu-indent gnu-getopt
(Here’s somebody’s master guide.)
Every time I monkey with my
.bashrc file I regret it.(
.profile is what graybeards like me use instead of using
.bash_profile like all the young people who won’t stay off my lawn.)
If you’re like me, you get those confused all the time, so let’s go to the bash(1) man page. (Amazingly, it is a man page and not an info node. Ahem.) Here’s the salient bit of that 37,000 word tome:
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
~/.profile, in that order, and reads and executes commands from the first one that exists and is readable. The –noprofile option may be used when the shell is started to inhibit this behavior.
When a login shell exits, bash reads and executes commands from the files
/etc/bash.bash_logout, if the files exists.
When an interactive shell that is not a login shell is started, bash reads and executes commands from
~/.bashrc, if that file exists. This may be inhibited by using the –norc option. The –rcfile file option will force bash to read and execute commands from file instead of
When bash is started non-interactively, to run a shell script, for example, it looks for the variable
BASH_ENVin the environment, expands its value if it appears there, and uses the expanded value as the name of a file to read and execute. Bash behaves as if the following command were executed:
if [ -n "$BASH_ENV" ]; then . "$BASH_ENV"; fi
but the value of the
PATHvariable is not used to search for the file name.
Got all that? The key is that your
.profile is read first for login shells and
.bashrc for non-login shells. There’s no reason why you should ever worry about what order they get invoked in, because there’s no reason to invoke them both at all. Except if you want to observe the DRY principle. In which case they should both invoke a separate startup file of your own design.
But from the command line, my (next most) favorite diff tool is colordiff. It’s called that because it color-codes the output when it’s used interactively, making it IMHO easier to see what’s changed. Actually, colordiff is just a wrapper around the real diff tool.
(Back to my list of Unixy tools for the Mac.)
Here’s what I hate about MacPorts:
---> Fetching xorg-bigreqsproto ---> Verifying checksum(s) for xorg-bigreqsproto ---> Extracting xorg-bigreqsproto ---> Configuring xorg-bigreqsproto ---> Building xorg-bigreqsproto ---> Staging xorg-bigreqsproto into destroot ---> Installing xorg-bigreqsproto @1.1.0_0 ---> Activating xorg-bigreqsproto @1.1.0_0 ---> Cleaning xorg-bigreqsproto ---> Fetching xorg-inputproto ---> Verifying checksum(s) for xorg-inputproto
You cannot blink without installing X11. You can’t build python 2.6 without tk, and tk requires X. In order to get a bloody scripting language, you have to install a windowing system, built in the 1980s, that’s been obsolete 10 years. Why, on God’s green earth, is anybody still using X on a Mac? Why aren’t MacPorts ports written so the default is to omit X?