ps1test: Add a PS1 tester

This commit is contained in:
Salt 2020-12-16 00:52:57 -06:00
parent 4263f0404a
commit 55c08e07f6

45
ps1test Executable file
View File

@ -0,0 +1,45 @@
#! /bin/bash
#
# ps1test
# Tests your bash PS1
# Copyright (C) 2020 Vintage Salt <rehashedsalt@cock.li>
#
# Distributed under terms of the MIT license.
#
main() {
. ~/.profile
. ~/.bashrc
printf "Default:\n"
printps1 # Test a default ps1
false || printps1 # Test after command failure
PWD=~/Documents printps1 # Test in a subdir of ~
PWD=/tmp printps1 # Test in a world-writeable dir
PWD=/usr/local printps1 # Test in unwriteable dir
PWD=/dir/that/doesnt/exist printps1 # Test in dir that doesn't exist
printf "\nDefault, different user:\n"
USER=notme printps1 # Test as another user
printf "\nSame user, different machine:\n"
SSH_CLIENT=notme HOSTNAME=notme printps1 # Test over fake SSH
printf "\nForeign machine, foreign user:\n"
USER=notme SSH_CLIENT=notme HOSTNAME=notme printps1 # Test both of the above
}
hostname() {
# We have this little stub here to intercept calls to hostname
echo "$HOSTNAME"
}
printps1() {
# Print the PS1, with some substitutions
"$PROMPT_COMMAND" > /dev/null 2>&1
PS1="${PS1//\\[/}"
PS1="${PS1//\\]/}"
PS1="${PS1//\\w/$PWD}"
PS1="${PS1//$HOME/\~}"
printf "\t$PS1\n"
}
main "$@"