Sponsored Content
Top Forums Shell Programming and Scripting How can I get the directory of my executing script? Post 302383345 by SFNYC on Tuesday 29th of December 2009 10:20:44 AM
Old 12-29-2009
Do you have PERL installed on your system? There are some functions that I have come across that can give you what you are looking for.
Code:
$ cat  /tmp/getpath.pl

#!/usr/bin/perl

use strict;
use warnings;

print GetAbsoluteFileName($0) . "\n";

exit 0;

sub GetAbsoluteFileName {
   my $passed_filename = shift;
   my $absolute_filename;
   use Cwd 'abs_path';

   #expand tildes
   $passed_filename =~ s{ ^ ~ ( [^/]* ) }
                 { $1
                       ? (getpwnam($1))[7]
                       : ( $ENV{HOME} || (getpwuid($<))[7]
                         )
   }ex;

   $absolute_filename = abs_path(ExpandEnvVars( $passed_filename ) );

   return $absolute_filename;
}

#Takes a string and substitutes the value of the environment variable and returns the string back
sub ExpandEnvVars {
    my $env_var = shift;

    # expand variables in $env_var, if environment var does not exist, leave it alone

    $env_var =~ s{
         \$                         # find a literal dollar sign
        (\w+)                       # find a "word" and store it in $1
    }{
        no strict 'refs';           # for $$1 below
        if (exists $ENV{$1}) {
            $ENV{$1};               # expand environment variables only
        } else {
            "\$$1";                 # environment var does not exist, so leave what they gave us
        }
    }egx;

   return $env_var;
}

$ /tmp/getpath.pl
/tmp/getpath.pl

$ ls -1 /tmp/test1/getpath.pl
/tmp/test1/getpath.pl

$ /tmp/test1/getpath.pl
/tmp/test1/getpath.pl

$ export MYTEST=/tmp/test2

$ ls -1 $MYTEST/getpath.pl
/tmp/test2/getpath.pl

$ $MYTEST/getpath.pl
/tmp/test2/getpath.pl

 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

general question on executing file in drwx--x--x directory

suppose: nevermind, i figured it out, haha... (2 Replies)
Discussion started by: cul8erppl
2 Replies

2. Shell Programming and Scripting

Monitoring a directory for new files with .xx and executing command if found

Hi Guys. I am a complete shell scripting newbie with some syntax and commands understanding. I'm more of a win admin. With that said: I need to write a shell script to monitor a directory '/Mon_Dir' for new occurrences of files with .xx extension. Once a new file is detected in the directory, a... (4 Replies)
Discussion started by: krkan
4 Replies

3. Shell Programming and Scripting

Executing script's directory

I have a shell script /home/user1/bin/sh1, how can I print out the directory of this file inside the script. Say I am in /home/user1/, then I run /home/user1/bin/sh1 I need it to print out /home/user1/bin. Thanks. (2 Replies)
Discussion started by: jasony001
2 Replies

4. Shell Programming and Scripting

getting : No such file or directory while executing a shell script

Hi all, I am getting : No such file or directory while executing a shell script. But i have that corresponding file in the corresponding path. It also have executable rights. Please help me out in this Thanks in advance. Ananthi.U (7 Replies)
Discussion started by: ananthi_ku
7 Replies

5. UNIX for Advanced & Expert Users

Executing a shell script from windows;script present in unix

I need to execute a shell script kept in unix machine from windows. User id, password area available. For eg. There's a shell script wich moves all the logs kept in my home directory to a directory named LOGS. Now i need to get this done through windows; either using a batch file, or java... (4 Replies)
Discussion started by: rajneesh_kapoor
4 Replies

6. Shell Programming and Scripting

CD (change directory) - Not advisable for executing a command

Hi, This is a quick one. I have got a review comment in one of the scripts that i wrote: "In UNIX script it not advisable to use cd to a directory and then run command." Is this true? I was trying to cd to log directory and use some cat or head or ls command. Many Thanks, Sam (2 Replies)
Discussion started by: samplify
2 Replies

7. Shell Programming and Scripting

Variables of executed script available in executing script

Hi, I have a script get_DB_var.ksh which do a data base call and get some variables as below: sqlplus -silent $user/$pass@dbname <<END select col1, col2, col3 from table_name where col4=$1; exit; END Now I want to access all these variables i.e.... (9 Replies)
Discussion started by: dips_ag
9 Replies

8. UNIX for Dummies Questions & Answers

Executing profile from any directory other than $HOME

Is there a way to run the profile which is not in $HOME directory? then whats the command for that? (1 Reply)
Discussion started by: SKhan
1 Replies

9. UNIX for Dummies Questions & Answers

Script dosent exits after executing the script

Hi i wrote a script which dosent exists after executing any help #!/bin/bash netstat -ptlen | grep 10000 if ; then echo "Hive Thrift server is running" exit 0 else echo "Hive Thrift server is down Trying to Bring up the service" | mail -s "ALERT" team@domain.com `nohup hive... (7 Replies)
Discussion started by: vikatakavi
7 Replies

10. Shell Programming and Scripting

Executing a command line in a directory and its subdirectories

I'm finally about to make the jump from PHP's mysql driver to the newer mysqli one using the mysqli converter tool. The tool is called by this command line: php /usr/share/nginx/html/rather/converter/cli.php -d -p ".php,.shtml,.inc" -u -b -v -w >> /tmp/convert.log e.g. at the web root:... (2 Replies)
Discussion started by: dheian
2 Replies
GETPWNAM(3)						     Linux Programmer's Manual						       GETPWNAM(3)

NAME
getpwnam, getpwuid - get password file entry SYNOPSIS
#include <pwd.h> #include <sys/types.h> struct passwd *getpwnam(const char *name); struct passwd *getpwuid(uid_t uid); DESCRIPTION
The getpwnam() function returns a pointer to a structure containing the broken out fields of a line from /etc/passwd for the entry that matches the user name name. The getpwuid() function returns a pointer to a structure containing the broken out fields of a line from /etc/passwd for the entry that matches the user uid uid. The passwd structure is defined in <pwd.h> as follows: struct passwd { char *pw_name; /* user name */ char *pw_passwd; /* user password */ uid_t pw_uid; /* user id */ gid_t pw_gid; /* group id */ char *pw_gecos; /* real name */ char *pw_dir; /* home directory */ char *pw_shell; /* shell program */ }; RETURN VALUE
The getpwnam() and getpwuid() functions return a pointer to the passwd structure, or NULL if the matching entry is not found or an error occurs. ERRORS
ENOMEM Insufficient memory to allocate passwd structure. FILES
/etc/passwd password database file CONFORMING TO
SVID 3, POSIX, BSD 4.3 SEE ALSO
fgetpwent(3), getgrnam(3), getpwent(3), setpwent(3), endpwent(3), getpw(3), putpwent(3), passwd(5) GNU
1996-05-27 GETPWNAM(3)
All times are GMT -4. The time now is 06:54 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy