A dirty hack to get around aliases not working in a shell script
In another script I’ve been working on lately I wanted to call 'mysql' but unfortunately on my machine it’s 'mysql5' rather than 'mysql'.
I have an alias defined in '~/.bash_profile' so I can call 'mysql' from the terminal whenever I want to.
alias mysql=mysql5
Unfortunately shell scripts don’t seem to have access to this alias and the only suggestion I’ve come across while googling this is to source '~/.bash_profile' inside the script.
Since others are going to use the script and might have '~/.bashrc' instead of '~/.bash_profile' I didn’t really want to go down that route.
At this stage a colleague of mine came up with the idea of creating a soft link from mysql to mysql5 inside a folder which is already added to the path.
We located mysql5…
> which mysql5
/opt/local/bin/mysql5
…and then created a soft link like so:
cd /opt/local/bin/mysql5
ln -s mysql5 mysql
And it works!
Of course t’is pure hackery so I’d be interested if anyone knows a better way of getting around this.
About the author
I'm currently working on short form content at ClickHouse. I publish short 5 minute videos showing how to solve data problems on YouTube @LearnDataWithMark. I previously worked on graph analytics at Neo4j, where I also co-authored the O'Reilly Graph Algorithms Book with Amy Hodler.