Setting up your fish shell for using ISIS3

Michael Aye
OpenPlanetary
Published in
2 min readOct 27, 2018

--

So, the supported ways for running ISIS3are cshand bashscripts as provided in the $ISISROOT/scriptsfolder ( start_isis.csh and .sh).

But I recently started to switch to fishfrom zsh, because I was sick of the fragile and complicated (complex?) setup that zshrequires. I was using the zpreztoframework and everytime I got an update on that, which is git-based, I got some conflicts between their config scripts and mine. I guess I still was doing it wrong, but I thought, that it really shouldn’t be too hard, so I looked for alternatives.

I actually even played with the totally new Python-based xonsh shell for a while, but it requires an extra plugin to work with conda , so I thought “here we go again, everything needs something extra to be configured”, so after finding some other problems with other good-sounding plugins, I decided to be not quite that radical for my everyday shell, and went with fish.

To be fair, the reason for this post is of course that it required something extra to run ISIS3 with the fish shell, but that’s just the mere lack of the simple startup script that is provide for csh and bash but not for fish.

So, without further ado, here’s how to set it up.

I first simply added the main ENV variables required to my config.fish file:

# ISIS3
set -x ISISROOT /isis3/isis
set -x ISIS3DATA $ISISROOT/../data
set -x PATH $PATH $ISISROOT/bin

The last ENV variable that is required is QT_PLUGIN_PATH, but because setting this ALWAYS can create havoc, specifically on Linux systems where its OS is written in Qt.

So, I put the setting of it into a new function called, of course, start_isis:

function start_isis
set -gx QT_PLUGIN_PATH $ISISROOT/3rdParty/plugins
end

Note the -g option (i.e. “global”) that enables the survival of the variable after executing the function code.

In case you need it, you unset a variable by doing set -e QT_PLUGIN_PATH which is **HIGHLY** confusing to me, because all time I want to **SET* a variable using the option -e, NATURALLY! ;) But no, -e stands for “erase” while -x stands for “export”. Harr…

Hope that helps someone out there, who wants to have more fish in their life! ;)

--

--