Linux - NewbieThis Linux forum is for members that are new to Linux.
Just starting out and have a question?
If it is not in the man pages or the how-to's this is the place!
Notices
Welcome to LinuxQuestions.org, a friendly and active Linux Community.
You are currently viewing LQ as a guest. By joining our community you will have the ability to post topics, receive our newsletter, use the advanced search, subscribe to threads and access many other special features. Registration is quick, simple and absolutely free. Join our community today!
Note that registered members see fewer ads, and ContentLink is completely disabled once you log in.
If you have any problems with the registration process or your account login, please contact us. If you need to reset your password, click here.
Having a problem logging in? Please visit this page to clear all LQ-related cookies.
Get a virtual cloud desktop with the Linux distro that you want in less than five minutes with Shells! With over 10 pre-installed distros to choose from, the worry-free installation life is here! Whether you are a digital nomad or just looking for flexibility, Shells can put your Linux machine on the device that you want to use.
Exclusive for LQ members, get up to 45% off per month. Click here for more info.
Distribution: Debian Etch (w/ dual-boot XP for gaming)
Posts: 282
Rep:
Command to normalise paths
Hi guys,
A nice easy one here (for someone who knows at least!). Very simple question - let's say I'm in directory /foo/bar/bin. What are my options to convert a pathname like ".." into /foo/bar? The simpler, and more importantly portable, the better - I'd like to avoid bash-isms if at all possible.
I know there's an easy way to do this, and I think I've even used it myself in the past and forgotten what it is... I tried various invocations of eval and passing arguments into pwd, but to no avail.
Distribution: Debian Etch (w/ dual-boot XP for gaming)
Posts: 282
Original Poster
Rep:
Mmm... that would work on the whole, but it feels a little clunky and awkward. Besides, it doesn't work with symlinks in the way I'd want it to:
Let's further assume that /foo/bar/share is a symlink to /usr/share. Then if we're in directory /foo/bar/bin, I want "../share" to be expanded into "/foo/bar/share". However, CDing into the argument and issuing pwd would return "/usr/share".
The command I had in mind, IIRC, essentially performed variable substitution on the supplied string, such that "~" at the start was transformed into the absolute path of your home directory, etc. I could write something similar myself as a short shell script, but distributing shell scripts isn't an option for me - I need something that'll run in /bin/sh on most *Nixes.
Distribution: approximately NixOS (http://nixos.org)
Posts: 1,900
Rep:
Well, remove /bin/ in pwd: it was intentional because for my last case I needed real absolute path. Just pwd will tell you what shell thinks is absolute path.
LinuxQuestions.org is looking for people interested in writing
Editorials, Articles, Reviews, and more. If you'd like to contribute
content, let us know.