Home > Software engineering >  Which command/function for same output of "\w"
Which command/function for same output of "\w"

Time:08-24

In Bash PS1 prompt, \w refers to the current working directory. Is there any equivalent using a command (best if it supports DIRTRIM env variable too).

I thought of the pwd command, but if cwd is /home/foo/bar, the value of "\w" should be ~/bar but the output of pwd is /home/foo/bar. It concludes that pwd is not what I want.

CodePudding user response:

Bash has special parameter expansion operator @P that will do what you want:

#! /usr/bin/env bash

w='\w'
curdir=${w@P}

printf 'Current directory: %s\n' "$curdir"
   ${parameter@operator}
          Parameter transformation.  The expansion is either a transforma‐
          tion  of  the  value of parameter or information about parameter
          itself, depending on the value of operator.  Each operator is  a
          single letter:

          P      The expansion is a string that is the result of expanding
                 the value of parameter as if it were a prompt string (see
                 PROMPTING below).
  • Related