
Where do you get the idea that Bash does not expand ~foo?
<transcript>
pc@Boole ~/Downloads
$ echo $SHELL
/bin/bash
pc@Boole ~/Downloads
$ echo ~pc
/home/pc
</transcript>
Bash Reference Manual section 3.5.2 begins with this paragraph:
<quote>
If a word begins with an unquoted tilde character (‘~’), all of the
characters up to the first unquoted slash (or all characters, if there
is no unquoted slash) are considered a tilde-prefix. If none of the
characters in the tilde-prefix are quoted, the characters in the
tilde-prefix following the tilde are treated as a possible login name.
If this login name is the null string, the tilde is replaced with the
value of the HOME shell variable. If HOME is unset, the tilde expands
to the home directory of the user executing the shell instead.
Otherwise, the tilde-prefix is replaced with the home directory
associated with the specified login name.
</quote>
Section 2.6.1 of the POSIX.1 shell specification describes tilde
expansion, and very explicitly requires that
<quote>
the characters in the tilde-prefix following the <tilde> shall be
treated as a possible login name from the user database
</quote>
so it actually *is* a standard.
In fact in something like
pongpath=~foo:~bar:~ugh
*each* of the three tildes begins a multicharacter tilde prefix.
On Wed, 23 Jul 2025 at 00:18, Mig Mit
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
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
wrote: There's also https://github.com/xmonad/xmonad-contrib/blob/master/XMonad/Prelude.hs#L135-... although it also does a few other things.
On Mon, Jul 21, 2025 at 7:57 AM Tristan Cacqueray via Haskell-Cafe
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-...
… 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@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.