This looks like a winner. Good stuff here!
I’ve spent years curating a collection of Mac bash aliases and shortcuts to make my life easier. My full .bash_profile is below, feel free to take whatever you find useful and put it to good use.
This looks like a winner. Good stuff here!
I’ve spent years curating a collection of Mac bash aliases and shortcuts to make my life easier. My full .bash_profile is below, feel free to take whatever you find useful and put it to good use.
Emacs on OS X El Cap is version 22. MacPorts version is 24.
$ sudo port install emacs
then
$ cd ~
$ emacs .bash_profile
paste in:
# Use the up-to-date MacPorts emacs
alias emacs='/opt/local/bin/emacs'
# For our chording coding friends
export EDITOR=/opt/local/bin/emacs
you’re done. Consider portsUpdate to keep it up-to-date daily.
MacPorts current vim is 7.4 and the version shipping with El Capitan is 7.3.
So…
$ sudo port install vim
then
$ cd ~
$ vim .bash_profile
paste in:
# Use the up-to-date MacPorts vim
alias='/opt/local/bin/vim'
# Life is good, so is vi
export EDITOR=/opt/local/bin/vim
you’re done. Consider portsUpdate to keep it up-to-date daily.
Mmmmmk, so apparently cron
is going the way of the dodo on OS X/Darwin. Best practice is to move your cron jobs to launchd
. Here’s the Apple kb info for timed jobs using launchd
(which includes the notice of deprecation) and here’s a great tutorial on using launchd
.
My goal was to automagically keep MacPorts up-to-date, ala Ubuntu’s unattended upgrades. Because I’m old, I put port selfupdate
, port upgrade outdated
& port uninstall inactive
in root’s crontab, but then today I was reading more and decided that I really ought to do it the Mac way since it’ll be upgrade proof.
Introducing portsUpdate! You can download the portsUpdate via git.
portsUpdate is copyleft.
Note: portsUpdate works with OS X 10.11 El Capitan. I am not going to test it with older Mac versions, although if your system runs launchd, you could try it. YMMV, I’m not responsible if you break your system in any case.
portsUpdate is a launchd xml file that runs a bash script once daily to update MacPorts, an associated launchd xml to ensure that the path is correct, and an associated installer.
TL;DR
If you trust me (don’t, why would you), you can just download the installer, open Terminal.app, &…
$ cd yourDownloadsDirectory
$ chmod +x InstallMacPortsUpdater
$ sudo ./InstallMacPortsUpdater
& have a coffee. Your MacPorts will update every morning at 3:30 a.m. & your old packages will be removed every Sunday to keep your system running lean.
If you want to know how to use it and want to read the scripts (or even improve upon them!) please read on along…
In particular, note the policy on timed launchd
jobs and the computer state: if your machine is asleep, it’ll run when it wakes, if it’s off, it’ll run the next time it’s scheduled.
I tend to enable Power Nap, especially on fixed workstations:
System Preferences > Engery Saver > Enable Power Nap
So if you want to inspect it before you install, just:
$ git clone https://github.com/seannyob/portsUpdate
$ cd portsUpdate
Note that there are four files:
setenv.PATH.plist
com.seannyob.portsUpdate.plist
portsUpdate
Install
And then to install you would just set Install
executable if it isn’t, then run it with sudo
.
So. setenv.PATH.plist
resolves an issue with launchd
which is that scripts/applications/programs in /opt/local/bin
are not in launchd
‘s path.
com.seannyob.portsUpdate.plist
tells launchd where portsUpdate is located & when to run it.
portsUpdate
is a bash script that runs updates, upgrades & cleanup of your MacPorts package database, ensuring that you are always up to date on features & any security &/or bug fixes of your critical unixy apps.
Install
is the same as InstallMacPortsUpdater
above. It is a bash script that checks to make sure you’ve installed MacPorts, then git, then gits the package, then installs the three other aforementioned files in their appropriate places in the file system, then loads them into launchd
using launchctl
.
Note in particular that if you wanted to modify the time &/or frequency of updates/upgrades, you could do so in com.seannyob.portsUpdate.plist
and the frequency of uninstall inactive is set for Sundays in portsUpdate
.
Feel free to peruse them and use or modify them to your liking. If you have comments &/or suggestions, please let me know!
Mmmk. So I got this groovy new iMac and was excited to try out Terminal app, which is indeed cool, but for some bizarre reason the default system shell is a generation old. Meh.
WTH? Ubuntu’s at 4.3.36!
Time for MacPorts! Go there, install the correct package for your version of OS X, and do a
$ xcode-select --install
$ sudo port install bash
Ok, cool, so yeah now you have it, but you want it to be your default shell.
I suppose you could symlink /bin/bash to the Mac ports version, but that seems a little hardcore.
Let’s do it the “right” way:
$ sudo echo '/opt/local/bin/bash' >> /etc/shells
That adds the newer bash from Mac ports to the system.
To make it your default shell:
chsh -s /opt/local/bin/bash
Exit and restart terminal and you should see:
Whooohoooo!
Make sure to keep things current by periodically running a:
$ sudo port selfupdate