5

I want to setup a time prompt on PS1. But, there is no document about what are symbols the busybox support.

Is there any one know? Here are all which I knew.

PS1='\u@\h: \w \$'
10

BusyBox has two shells, ash and hush. To see which one you have, run type chdir: ash has it as a builtin (synonymous with cd), hush doesn't. Both have an optional prompt expansion feature. Ash's is enabled by activating the ASH_EXPAND_PRMT feature at compile time, while hush requires FEATURE_EDITING_FANCY_PROMPT.

When that feature is present, in ash the value of PS1 is expanded like a double-quoted string: $foo, $(command) and `command` constructs are expanded.

Some backslash escapes are processed (in ash, after substitutions). They are a subset of bash's.

  • \!: line history count
  • \a: bell
  • \b: backspace
  • \e, \E: escape
  • \f: form feed
  • \h: host name
  • \n: newline
  • \r: carriage return
  • \t: tab
  • \u: user name (only with FEATURE_GETUSERNAME_AND_HOMEDIR)
  • \v: vertical tab
  • \w: current directory, with ~ for the home directory (only with FEATURE_GETUSERNAME_AND_HOMEDIR)
  • \W: current directory (unabbreviated)
  • \xHH or \XHH where HH are two hexadecimal digits: a character given by its hex code
  • \[…\]: the enclosed text doesn't count for width calculation purposes

(If you're looking at the source code, this happens in parse_and_put_prompt in libbb/lineedit.c.)

  • Is there any way to fake this, maybe with printf, if it wasnt compiled in? – Steven Penny Feb 19 '16 at 1:42
  • @StevenPenny To fake what? Backslash expansions can be faked with variable and command substitutions, but I think they're both enabled or disabled together. If they're absent, I don't think you can have a variable prompt, except by changing the value of PS1. – Gilles Feb 19 '16 at 8:42

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.