[Haskell-cafe] how to expand ~ in a filepath

Iustin Pop iustin at k1024.org
Tue Jul 22 12:30:21 UTC 2025


No need to refer to current versions. Per
https://en.wikipedia.org/wiki/Tilde and other resources, this was
introduced in the 1970s. Now whether some shells don't expand it, it's
another question.

Gemini/Google AI search even claims that it is part of the POSIX
standard, I don't know if that's true.

More fun resources: https://dave.cheney.net/2017/08/21/the-here-is-key :)

regards,
iustin

On 2025-07-22 14:23:04, Hécate via Haskell-Cafe wrote:
> With GNU bash, version 5.2.37(1)-release, `~foo` (provided that foo is a
> user) is indeed expanded to the user's home directory.
> 
> Cheers,
> Hécate
> 
> Le 22/07/2025 à 14:17, Mig Mit a écrit :
> > There is no “should” here. It might be what you want, but it's not a universal standard. In Bash, “~foo” is not expanded.
> > 
> > Sent from my iPad
> > 
> > > On 2025. Jul 22., at 15:13, Richard O'Keefe <raoknz at gmail.com> wrote:
> > > 
> > > But it's not just ~/ that should be expanded.
> > > All four of "~" "~/bar" "~foo" and "~foo/bar" should be expanded by a
> > > tilde-expander.
> > > 
> > > > On Tue, 22 Jul 2025 at 03:06, Brandon Allbery <allbery.b at gmail.com> wrote:
> > > > 
> > > > There's also https://github.com/xmonad/xmonad-contrib/blob/master/XMonad/Prelude.hs#L135-L156 although it also does a few other things.
> > > > 
> > > > > On Mon, Jul 21, 2025 at 7:57 AM Tristan Cacqueray via Haskell-Cafe <haskell-cafe at haskell.org> wrote:
> > > > > 
> > > > > 
> > > > > Hello, unfortunately there is no "expandHomePath" or "realpath" helpers
> > > > > in the standard libraries. Searching for "FilePath -> IO FilePath" in
> > > > > hoogle shows an implementation in the hledger project:
> > > > >   https://hackage-content.haskell.org/package/hledger-lib-1.43.2/docs/Hledger-Utils-IO.html#v:expandHomePath
> > > > > 
> > > > > … which check if the path begins with "~/", and replace that with the
> > > > > output of "getHomeDirectory"
> > > > > 
> > > > > -Tristan
> > > > > 
> > > > > On Mon, Jul 21, 2025 at 07:19 PICCA Frederic-Emmanuel wrote:
> > > > > > Hello, I am trying to open and read the content of this kind of filepath.
> > > > > > 
> > > > > > ~/debian/changelog
> > > > > > 
> > > > > > So is there a prefered way to expand the ~ into the real $HOME.
> > > > > > 
> > > > > > thanks for your help
> > > > > > 
> > > > > > Frédéric
> > > > > > 
> > > > > > 
> > > > > > Classification de confidentialité SOLEIL
> > > > > > 
> > > > > > Ce message et ses pièces jointes peuvent contenir des informations soumises à des règles de diffusion :
> > > > > > 
> > > > > >   *   P (Public) : Diffusion libre y compris à l'extérieur de SOLEIL.
> > > > > >   *   I (Interne) : Diffusion libre au sein de SOLEIL, ne doit pas être communiqué à l’extérieur sauf mention spécifique.
> > > > > >   *   C (Confidentiel) : Diffusion restreinte aux personnes autorisées, internes ou externes. Le partage nécessite l'accord de la hiérarchie.
> > > > > >   *   S (Sensible) : Accès restreint aux seuls destinataires. Partage non autorisé.
> > > > > > 
> > > > > > Les informations contenues dans cet e-mail sont la propriété de SOLEIL. Si vous n'êtes pas le destinataire prévu, merci de nous en notifier et de ne pas utiliser, copier ou distribuer les informations qu'il contient.
> > > > > > _______________________________________________
> > > > > > Haskell-Cafe mailing list
> > > > > > To (un)subscribe, modify options or view archives go to:
> > > > > > http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe
> > > > > > Only members subscribed via the mailman list are allowed to post.
> > > > > _______________________________________________
> > > > > Haskell-Cafe mailing list
> > > > > To (un)subscribe, modify options or view archives go to:
> > > > > http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe
> > > > > Only members subscribed via the mailman list are allowed to post.
> > > > 
> > > > 
> > > > --
> > > > brandon s allbery kf8nh
> > > > allbery.b at gmail.com
> > > > _______________________________________________
> > > > Haskell-Cafe mailing list
> > > > To (un)subscribe, modify options or view archives go to:
> > > > http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe
> > > > Only members subscribed via the mailman list are allowed to post.
> > > _______________________________________________
> > > Haskell-Cafe mailing list
> > > To (un)subscribe, modify options or view archives go to:
> > > http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe
> > > Only members subscribed via the mailman list are allowed to post.
> > _______________________________________________
> > Haskell-Cafe mailing list
> > To (un)subscribe, modify options or view archives go to:
> > http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe
> > Only members subscribed via the mailman list are allowed to post.
> 
> -- 
> Hécate ✨
> 🐦: @TechnoEmpress
> IRC: Hecate
> WWW: https://glitchbra.in
> RUN: BSD
> 
> _______________________________________________
> Haskell-Cafe mailing list
> To (un)subscribe, modify options or view archives go to:
> http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe
> Only members subscribed via the mailman list are allowed to post.


More information about the Haskell-Cafe mailing list