Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages


home | help
Env::PS1(3)	      User Contributed Perl Documentation	   Env::PS1(3)

       Env::PS1	- prompt string	formatter

	       # use the import	function
	       use Env::PS1 qw/$PS1/;
	       $ENV{PS1} = '\u@\h \$ ';
	       print $PS1;
	       $readline = <STDIN>;

	       # or tie	it yourself
	       tie $prompt, 'Env::PS1',	'PS1';

	       # you can also tie a scalar ref
	       $format = '\u@\h\$ ';
	       tie $prompt, 'Env::PS1',	\$format;

       This package supplies variables that are	"tied" to environment
       variables like 'PS1' and	'PS2', if read it takes	the contents of	the
       variable	as a format string like	the ones bash(1) uses to format	the

       It is intended to be used in combination	with the various ReadLine

       You can request for arbitrary variables to be exported, they will be
       tied to the environment variables of the	same name.

       When you	"tie" a	variable you can supply	one argument which can either
       be the name of an environement variable or a SCALAR reference. This
       argument	defaults to 'PS1'.

	   Returns the formatted string.

	   Using this method all the time is a lot less	efficient then using
	   the tied variable, because the tied variable	caches parts of	the
	   format that remain the same anyway.

       The format is copied mostly from	bash(1)	because	that's what it is
       supposed	to be compatible with. We made some private extensions which
       obviously are not portable.

       Note that this is not the prompt	format as specified by the posix
       specification, that would only know "!" for the history number and "!!"
       for a literal "!".

       Apart from the escape sequences you can also use	environment variables
       in the format string; use $VAR or "${VAR}".

       The following escape sequences are recognized:

       \a  The bell character, identical to "\007"

       \d  The date in "Weekday	Month Date" format

	   The date in strftime(3) format, uses	POSIX

       \e  The escape character, identical to "\033"

       \n  Newline

       \r  Carriage return

       \s  The basename	of $0

       \t  The current time in 24-hour format, identical to "\D{%H:%M:%S}"

       \T  The current time in 12-hour format, identical to "\D{%I:%M:%S}"

       \@  The current time in 12-hour am/pm format, identical to "\D{%I:%M

       \A  The current time in short 24-hour format, identical to "\D{%H:%M}"

       \u  The username	of the current user

       \w  The current working directory

       \W  The basename	of the current working directory

       \$  "#" for effective uid is 0 (root), else "$"

	   The character corresponding to the octal number 0dd

       \\  Literal backslash

       \H  Hostname, uses Sys::Hostname

       \h  First part of the hostname

       \l  The basename	of the (output)	terminal device	name, uses POSIX, but
	   won't be really portable.

       \[ \]
	   These are used to encapsulate a sequence of non-printing chars.
	   Since we don't need that, they are removed.

       The following escapes are extensions not	supported by bash, and are not

       \L  The (output)	terminal device	name, uses POSIX, but won't be really

	   Insert the ANSI sequence for	named colour.  Known colours are:
	   black, red, green, yellow, blue, magenta, cyan and white;
	   background colours prefixed with "on_".  Also known are reset,
	   bold, dark, underline, blink	and reverse, although the effect
	   depends on the terminla you use.

	   Unless you want the whole commandline coloured you should end your
	   prompt with "\C{reset}".

	   Of course you can still use the "raw" ansi escape codes for these

	   Note	that "bold" is sometimes also known as "bright", so
	   "\C{bold,black}" will on some terminals render dark grey.

	   If the environment variable "CLICOLOR" is defined but false colours
	   are switched	off automaticly.

	   Proc	information.

	   All of these	are unix specific

	   %a  Acpi AC status '+' or '-' for connected or not, linux specific

	   %b  Acpi battery status in mWh, linux specific

	   %L  Load average

	   %l  First number of the load	average

	   %t  Acpi temperature, linux specific

	   %u  Uptime

	   %w  Number of users logged in

   Not implemented escapes
       The following escapes are not implemented, because they are application

       \j  The number of jobs currently	managed	by the application.

       \v  The version of the application.

       \V  The release number of the application, version + patchelvel

       \!  The history number of the next command.

	   This	escape gets replaced by	literal	'!' while a literal '!'	gets
	   replaces by '!!'; this makes	the string a posix compatible prompt,
	   thus	it will	work if	your readline module expects a posix prompt.

       \#  The command number of the next command (like	history	number,	but
	   minus the lines read	from the history file).

       If you want to overload escapes or want to supply values	for the
       application specific escapes you	can put	them in	%Env::PS1::map,	the
       key is the escape letter, the value either a string or a	CODE ref. If
       you map a CODE ref it normally is called	every time the prompt string
       is read.	When the escape	is followed by an argument in the format
       string (like "\D{argument}") the	CODE ref is called only	once when the
       string is cached, but in	that case it may in turn return	a CODE ref.

       Please mail the author if you encounter any bugs.

       Jaap Karssenberg	|| Pardus [Larus] <>

       This module is currently	maintained by Ryan Niebur <>

       Copyright (c) 2004 Jaap G Karssenberg. All rights reserved.  Copyright
       (c) 2009	Ryan Niebur.  This program is free software; you can
       redistribute it and/or modify it	under the same terms as	Perl itself.

       Env, Term::ReadLine::Zoid

perl v5.32.1			  2021-03-01			   Env::PS1(3)


Want to link to this manual page? Use this URL:

home | help