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

Mig Mit migmit at gmail.com
Tue Jul 22 12:17:48 UTC 2025


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.


More information about the Haskell-Cafe mailing list