perlquestion
The Hindmost
Hi Monks, I'm currently modifying the Linux connection shell script for my University's network (to improve efficiency and connection success) and have found an interesting conundrum: bash works fine as a shell, sh doesn't (no known data for other shells yet).
<p>
So I've written a small perl program to pull the current shell out of env's output and warn the user if they're not running bash (code below):
<p><code>
#!/usr/bin/perl -w
# shellGet.pl
# A program to return the current shell of the user
#
# Christopher Dykes (2008-09-30)
#Use the following modules:
use strict; #Use strict syntax
use warnings; #Enable warnings
#Get the environment data write it externally and open it for use:
system("env > .env.txt");
open(ENV, ".env.txt") || die("Couldn't open environment data file: $!");
while(my $fileLine = <ENV>) #Read in our environment file
{
if($fileLine =~ /SHELL=/) #Search for the shell line
{
my @shellLine = split(/=/, $fileLine); #Extract the relevant portion
print "$shellLine[1]"; #Display our shell
#All done:
close ENV; #Close the environment file
system("rm .env.txt > /dev/null"); #Clean up the environment file
exit; #And Quit
}
}
#We shouldn't get here unless there's been an error:
die("\aError: Couldn't find SHELL\texiting\n");
</code><p>
This works, but it's more a question of efficiency is this the fastest way to do this (unlikely) and if there is a faster way can you give me any hints.
<p>
Thanks in advance Chris