getting absolute path of a file in csh?

Joshua Pollak josh at offthehill.org
Tue Aug 8 14:05:59 EDT 2006


Tom Metro wrote:
> Robert La Ferla wrote:
>> In a csh script, how do you get the absolute path of a filename?
>> If the cwd is "/users/myacct" and there is a file called
>> "filename.dat", I want a command (built-in or external)  that given
>> the argument "filename.dat", returns "/users/myacct/filename.dat".
>
> set file="filename.dat"
> echo "$cwd/$file:t" 
I use this code (in bash, sorry), to resolve the true path and name of a
referenced file. The while loop unwinds symbolic links to make sure we
are referring to the true file. (Modified code courtesy of the Tomcat
catalina startup script.) Maybe someone could translate to CSH?

# resolve links - $0 may be a softlink
PRG="$0"

while [ -h "$PRG" ] ; do
  ls=`ls -ld "$PRG"`
  link=`expr "$ls" : '.*-> \(.*\)$'`
  if expr "$link" : '.*/.*' > /dev/null; then
    PRG="$link"
  else
    PRG=`dirname "$PRG"`/"$link"
  fi
done

PRGDIR=`dirname "$PRG"`
PROGNAME=`basename "$PRG"`





More information about the Discuss mailing list