Project

General

Profile

1
#!/bin/bash
2
# Sets a password environment variable
3

    
4
self="$(readlink -f -- "$BASH_SOURCE")"
5

    
6
test -t 2 && ccTty= || ccTty=1 # cc the tty if stderr is a log file
7
{
8
store=
9
test _"$1" = _- && { store=1; shift;}
10

    
11
if ! test "$#" -ge 1; then
12
    echo "Usage: . $self env_var [desc] (note initial \".\")"|fold -s
13
    exit 2
14
fi
15

    
16
desc="$2"
17
test -n "$desc" || desc="the $1 password"
18

    
19
function trace()
20
{
21
    { for arg in "$@"; do printf "%q " "$arg"; done; echo;}
22
}
23

    
24
if test -n "$store" -o -z "${!1+t}"; then # env var with name $1 is unset
25
    if test -n "$store"; then
26
        echo " To change the saved value for $desc, run: "
27
    else
28
        echo " You must first store $desc. At the shell, run: "
29
    fi
30
    trace . "$self" - "$@"
31
    
32
    test -z "$store" && exit 1 # just direct user how to store password
33
    read -s -p "Enter $desc: "; echo
34
    export "$1"="$REPLY"
35
fi
36
} 2>&1|tee ${ccTty:+/dev/tty} >&2
(5-5/25)