Reloading .bashrc within a BASH terminal session

BASH is a command-line interpretor that is commonly used by Linux and UNIX operating systems. Chances are that you will find find yourself in a BASH session if you start up a terminal emulator in many of these though there are others like KSH and SSH too.

BASH comes with its own configuration files and one of these is located in your own home directory, .bashrc. Among other things, it can become a place to store command shortcuts or aliases. Here is an example:

alias us=’sudo apt-get update && sudo apt-get upgrade’

Such a definition needs there to be no spaces around the equals sign and the actual command to be declared in single quotes. Doing anything other than this will not work as I have found. Also, there are times when you want to update or add one of these and use it without shutting down a terminal emulator and restarting it.

To reload the .bashrc file to use the updates contained in there, one of the following commands can be issued:

source ~/.bashrc

. ~/.bashrc

Both will read the file and execute its contents so you get those updates made available so you can continue what you are doing. There appears to be a tendency for this kind of thing in the world of Linux and UNIX because it also applies to remounting drives after a change to /etc/fstab and restarting system services like Apache, MySQL or Nginx. The command for the former is below:

sudo mount -a

Often, the means for applying the sorts of in-situ changes that you make are simple ones too and anything that avoids system reboots has to be good since you have less work interruptions.

A first look at SAS University Edition

My first introduction to SAS came near the start of my post-university career over a decade ago. It was six weeks of classroom training and hands-on case studies that got me going with SAS 6.12. The included SAS products naturally included the components of Base SAS for data processing (data step, PROC SQL) and reporting as well as SAS/Graph. All of that was enough for a placement with one of my then employer’s clients with the added advantage of becoming one of the client’s own employees at the end of it. During that stay, more SAS versions followed until the launch of 9.1.3. Eventually, I moved onto pastures new and I remain a SAS user with 9.3 being the most recent version that I have met at work while SAS University Edition is bringing me towards 9.4.

SAS Learning Edition

Though it is possible to extend one’s knowledge on the job, that can be harder to manage during the working day when times are busy. Before SAS University Edition, we had SAS Learning Edition and I took delivery of a copy while it was available. It included SAS Enterprise Guide 4.1 together with a limited version of SAS 9 that a few limitations. Firstly it only would process up to 1500 records in any dataset but that was not such a problem for learning. Support from SAS was limited too even if the package had a price that I seem to remember was around £100 but my memory is hazy about this. What you need to remember is that SAS licenses are vastly more expensive than this so you got that for which you have paid. If you did have a Base SAS installation, Learning Edition would co-exist with it and versions like 8.2 and 9.1.3 Service Pack 4 were compatible so long as you had them pre-installed. There was a warning that re-installation of software might be required if either SAS Learning Edition or Base SAS is removed inappropriately.

Speaking of licenses, Learning Edition was time limited with its own version 2.0 (based on Enterprise Guide 2.0 and, if I recall correctly, SAS 8.2) and version 4.1 purchased prior to September 10, 2007 expiring on December 31, 2008. The expiry date for version 4.1 after the aforementioned purchase deadline was December 31, 2011. More conventionally, it was for single PC installation only and that PC had to run either Windows 2000 or Windows XP Professional. The process was one that would be more than familiar to anyone who ever installed software on a machine running Windows. Even with those older operating systems, it needed 1,080 MB of hard disk space. It reminds me of a time when 10 GB of hard drive capacity was generous but that had moved beyond 160 GB around ten years ago. The RAM requirements also fitted the time with 256 MB being the bare minimum and 512 MB being recommended.

Usefully, the whole package came with a copy of The Little SAS Book and, not having it next to me while writing these words, I cannot recall whether whether it was the version for Enterprise Guide or the Primer edition. Though I may not have made as much use of the software as I could have done, it certainly came in useful for trying a few things and I found a way to start up the more traditional SAS DMS interface as well as Enterprise Guide.

SAS University Edition

Apart for being made available free of charge, SAS University Edition is very different from its predecessor, SAS Learning Edition. After all, things have moved along since the last decade and SAS has its SAS Analytics U (for University, I presume) community now and that may explain the name though there is a wider focus on established university teaching too. Even long term SAS users like me can be called learners too so we get allowed in as well.

Firstly, it works in a very different way since you no longer are installing SAS software like you would with Microsoft Office or Adobe Photoshop. To work, it needs you to have one of Oracle VirtualBox (4.3.12 is preferred at the time of writing), VMware Player or VMware Fusion because what you are getting is a virtual machine. For those unfamiliar with such things, SAS has Quick Start guides for each:

VirtualBox

VMware Player

VMware Fusion

The available VM’s are built around Linux in that 64-bit Red Hat Enterprise Linux is installed in there with SAS running as a service on top of it. In fact, the virtual runs solely as a server with just a screen informing you of the IP address that you need to load in your web browser of choice. That reveals another break with the past with SAS Studio being used in place of Enterprise Guide or the SAS DMS. While all the processing happens within the virtual machine, it is possible to store files on your own host operating system’s file system using by setting up a shared folder called myfolders that points to where you want it and that SAS Studio can use.

The use of virtualisation to roll out a local SAS server that makes SAS Studio available is neat and means that you do not need to run Microsoft Windows on a PC as was the case with SAS Learning Edition. Mac OS X and Linux are possibilities and I use the latter at home so this is a very good thing. Furthermore, there are installation guide for each supported operating system:

Linux

OS X

OS X

The version of SAS that you get is 9.4 and it is licensed until the middle of June 2015 with a 45 day grace period taking you as far as the end of July. Along with Base SAS, you also get SAS/STAT, SAS/IML, SAS/Secure 168-bit, SAS/ACCESS Interface to PC Files, SAS/ACCESS Interface to ODBC, SAS/IML Studio, SAS Workspace Server for Local Access, SAS Workspace Server for Enterprise Access and High Performance Suite. SAS/Graph is absent but new statistical graphics procedures like SGPLOT and SGPANEL are there so graph creation possibilities should be covered anyway.

All in all, SAS University Edition looks a snazzy arrangement and I plan to explore what is offered. SAS Studio is a new to me but there are enough recognisable features to help me settle in with it and it would merit an entry of its own on here. In fact, SAS has some video tutorials on their YouTube channel that show off some of its capabilities and the new tool certainly carries over from both Enterprise Guide and the more traditional DMS interface.

Speaking of blogging, SAS has an entry on one of the theirs that it has called Free SAS Software for students!, which is another introduction to SAS University Edition. Other (non-blog) articles include Get Started With SAS® University Edition along with a useful FAQ.

Changing the working directory in a SAS session

It appears that PROC SGPLOT and other statistical graphics procedures create image files even if you are creating RTF or PDF files. By default, these are PNG files but there are other possibilities. When working with PC SAS , I have seen them written to the current working directory and that could clutter up your folder structure, especially if they are unwanted.

Being unable to track down a setting that controls this behaviour, I resolved to find a way around it by sending the files to the SAS work directory so they are removed when a SAS session is ended. One option is to set the session’s working directory to be the SAS work one and that can be done in SAS code without needing to use the user interface. As a result, you get some automation.

The method is implicit though in that you need to use an X statement to tell the operating system to change folder for you. Here is the line of code that I have used:

x “cd %sysfunc(pathname(work))”;

The X statement passes commands to an operating system’s command line and they are enclosed in quotes. %sysfunc then is a macro command that allows certain data step functions or call routines as well as some SCL functions to be executed. An example of the latter is pathname and this resolves library or file references and it is interrogating the location of the SAS work library here so it can be passed to the operating systems cd (change directory) command for processing. This method works on Windows and UNIX so Linux should be covered too, offering a certain amount of automation since you don’t have to specify the location of the SAS work library in every session due to the folder name changing all the while.

Of course, if someone were to tell me of another way to declare the location of the generated PNG files that works with RTF and PDF ODS destinations, then I would be all ears. Even direct output without image file creation would be even better. Until then though, the above will do nicely.

Turning on autocompletion for the bash shell in terminal sessions

At some point, I managed to lose the ability to have tab key based autocompletion on terminal sessions on my Ubuntu GNOME machine. Wanting it back had me turn to the web for an answer and I found it on a Linux Mint forum; the bash shell is so pervasive in the UNIX and Linux worlds that you can look anywhere for a fix like this.

The problem centred around the .bashrc file in my home area. It does have quite a few handy custom aliases and I must have done a foolish spring clean on the file sometime. That is the only way that I can explain how the following lines got removed:

if [ -f /etc/bash_completion ]; then
. /etc/bash_completion
fi

What they do is look to see if /etc/bash_completion can be found on your system and to use it for tab-based autocompletion. With the lines not in .bashrc, it couldn’t happen. Others may replace bash_completion with bash.bashrc to got a fuller complement of features but I’ll stick with what I have for now.

A need to update graphics hardware

Not being a gaming enthusiast, having to upgrade graphics cards in PC’s is not something that I do very often or even rate as a priority. However, two PC’s in my possession have had that very piece of hardware upgraded on them and it’s not because anything was broken either. My backup machine has seen quite a few Linux distros on there since I built it nearly four years ago. The motherboard is an ASRock K10N78 that sourced from MicroDirect and it has onboard an NVIDIA graphics chip that has performed well if not spectacularly. One glitch that always existed was a less than optimal text rendering in web browsers but that never was enough to get me to add a graphics card to the machine.

More recently, I ran into trouble with Sabayon 13.04 with only the 2D variant of the Cinnamon desktop environment working on it and things getting totally non-functional when a full re-installation of the GNOME edition was attempted. Everything went fine until I added the latest updates to the system when a reboot revealed that it was impossible to boot into a desktop environment. Some will relish this as a challenge but I need to admit that I am not one of those. In fact, I tried out two Arch-based distros on the same PC and got the same results following a system update on each. So, my explorations of Antergos and Manjaro have to continue in virtual machines instead.

To get a working system, I gave Linux Mint 15 Cinnamon a go and that worked a treat. However, I couldn’t ignore that the cutting edge distros that I tried before it all took exception to the onboard NVIDIA graphics. systemd has been implemented in all of these and it seems reasonable to think that it is coming to Linux Mint at some stage in the future so I went about getting a graphics card to add into the machine. Having had good experiences with ATi’s Radeon in the past, I stuck with it even though it now is in the hands of AMD. Not being that fussed so long there was Linux driver support, I picked up a Radeon HD 6450 card from PC World. Adding it into the PC was a simpler of switching off the machine, slotting in the card, closing it up and powering it on again. Only later on did I set the BIOS to look for PCI Express graphics before anything else and I could have got away without doing that. Then, I made use of the Linux Mint Additional Driver applet in its setting panel to add in the proprietary driver before restarting the machine to see if there were any visual benefits. To sort out the web browser font rendering, I used the Fonts applet in the same settings panel and selected full RGBA hinting. The improvement was unmissable if not still like the appearance of fonts on my main machine. Overall, there had been an improvement and a spot of future proofing too.

That tinkering with the standby machine got me wondering about what I had on my main PC. As well as onboard Radeon graphics, it also gained a Radeon 4650 card for which 3D support wasn’t being made available by Ubuntu GNOME 12.10 or 13.04 to VMware Player and it wasn’t happy about this when a virtual machine was set to have 3D support. Adding the latest fglrx driver only ensured that I got a command line instead of a graphical interface. Issuing one of the following commands and rebooting was the only remedy:

sudo apt-get remove fglrx

sudo apt-get remove fglrx-updates

Looking at the AMD website revealed that they no longer support 2000, 3000 or 4000 series Radeon cards with their latest Catalyst driver the last version that did not install on my machine since it was built for version 3.4.x of the Linux kernel. A new graphics card then was in order if I wanted 3D graphics in VWware VM’s and both GNOME and Cinnamon appear to need this capability. Another ASUS card, a Radeon HD 6670, duly was acquired and installed in a manner similar to the Radeon HD 6450 on the standby PC. Apart from not needing to alter the font rendering (there is a Font tab on Gnome Tweak Tool where this can be set), the only real exception was to add the Jockey software to my main PC for installation of the proprietary Radeon driver. The following command does this:

sudo apt-get install jockey-kde

When that was done I issue the jockey-kde command and selected the first entry on the list. The machine worked as it should on restarting apart from an AMD message at the bottom right hand corner bemoaning unrecognised hardware. There had been two entries on that Jockey list with exactly the same name so it was time to select the second of these and see how it went. On restarting, the incompatibility message had gone and all was well. VMware even started virtual machines with 3D support without any messages so the upgrade did the needful there.

Hearing of someone doing two PC graphics card upgrades in a weekend may make you see them as an enthusiast but my disinterest in computer gaming belies this. Maybe it highlights that Linux operating systems need 3D more than might be expected. The Cinnamon desktop environment now issues messages if it is operating in 2D mode with software 3D rendering and GNOME always had the tendency to fall back to classic mode, as it had been doing when Sabayon was installed on my standby PC. However, there remain cases where Linux can rejuvenate older hardware and I installed Lubuntu onto a machine with 10 year old technology on there (an 1100 MHz Athlon CPU, 1GB of RAM and 60GB of hard drive space in case dating from 1998) and it works surprisingly well too.

It seems that having fancier desktop environments like GNOME Shell and Cinnamon means having the hardware on which it could run. For a while, I have been tempted by the possibility of a new PC since even my main machine is not far from four years old either. However, I also spied a CPU, motherboard and RAM bundle featuring an Intel Core i5-4670 CPU, 8GB of Corsair Vengence Pro Blue memory and a Gigabyte Z87-HD3 ATX motherboard included as part of a pre-built bundle (with a heatsink and fan for the CPU) for around £420. Even for someone who has used AMD CPU’s since 1998, that does look tempting but I’ll hold off before making any such upgrade decisions. Apart from exercising sensible spending restraint, waiting for Linux UEFI support to mature a little more may be no bad idea either.

Update 2013-06-23: The new graphics card in my main machine is working as it should and has reduced the number of system error report messages turning up too; maybe Ubuntu GNOME 13.04 didn’t fancy the old graphics card all that much. A rogue .fonts.conf file was found in my home area on the standby machine and removing it has improved how fonts are displayed on there immeasurably. If you find one on your system, it’s worth doing the same or renaming it to see if it helps. Otherwise, tinkering with the font rendering settings is another beneficial act and it even helps on Debian 6 too and that uses GNOME 2! Seeing what happens on Debian 7.1 could be something that I go testing sometime.