I feel stupid -- determine the full path to a file

Dave Smith dave at thesmithfam.org
Thu Dec 6 13:12:51 MST 2007

Michael L Torrie wrote:
> I have a script that is passed a filename.  This filename could be
> absolute, it could be relative.  I need the script to be able to
> determine the pull path to this file.  I've read lots of hacks for doing
> this that involve ls, find, and pwd, but none of them do what I need.
> If the script was invoked like this,
> Any tips?

C has a function called realpath() that does the job, but bash has no 
such counterpart. I  usually end up building my own little binary to do 
it, and calling that from my shell scripts. Here's the source:

#include <limits.h>
#include <stdio.h>
#include <stdlib.h>

 * Converts a directory or file name to its canonicalized representation
 * using the realpath() function (man realpath).
int main( int argc, char **argv )
    if( argc != 2 )
        printf( "Usage: %s <path>\n", argv[0] );
        return 1;

    char output[PATH_MAX];
    realpath( argv[1], output );
    printf( "%s\n", output );

    return 0;

More information about the PLUG mailing list