.bash_profile


.bash_profile

Bourne shell profile

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
#!/bin/bash
# Hi, emacs... this is -*- shell-script -*-

# =======================================================================
# = Variables
# =

_dir_mail_prefix="/var"
_default_term=ansi

TTYTYPE=""

_uname_system="$(uname -s)"
_uname_machine="$(uname -m)"

# =======================================================================
# = OS detection
# =

case "${_uname_system}" in
    UnixWare)
        _default_term="scoansi"
        ;;
    SCO_SV)
        _dir_mail_prefix="/usr"
        _default_term="scoansi"
        ;;
    HP-UX)
        _dir_mail_prefix="/usr"
        _default_term="hp"
        ;;
    *)
        _dir_mail_prefix="/var"
        ;;
esac

# =======================================================================
# = OS-specific Funtions
# =

buildUltrix() {
    local prefix="/freeware/gnu-tools"
    local decarch="mips"

    case "${_uname_machine}" in
        VAX) decarch="vax"  ;;
        *)   decarch="mips" ;;
    esac

    if [ -d "${prefix}/${decarch}/bin" ]
    then
        PATH=${prefix}/${decarch}/bin:$PATH
    fi

    if [ -d "${prefix}/${decarch}/lib" ]
    then
        LIBRARY_PATH=${prefix}/${decarch}/lib:$LIBRARY_PATH
    fi

    if [ -d "${prefix}/man" ]
    then
        MANPATH=${prefix}/man:$MANPATH
    fi
}

# =======================================================================
# = Funtions
# =

buildPaths() {
    PATH=""

    # /bin is always first
    PATH=/bin

    # Build paths now
    test -d ${HOME}/bin && PATH=${HOME}/bin:${PATH}

    # System stuff
    test -d /usr/local/sbin && PATH=/usr/local/sbin:${PATH}
    test -d /usr/sbin       && PATH=/usr/sbin:${PATH}
    test -d /sbin           && PATH=/sbin:${PATH}

    # Split this into a function call for each OS or some shit.
    # User stuff
    test -d /usr/bin           && PATH=/usr/bin:${PATH}
    test -d /usr/lbin          && PATH=/usr/lbin:${PATH}
    test -d /usr/tcb           && PATH=/usr/tcb:${PATH}
    test -d /usr/ucb           && PATH=/usr/ucb:${PATH}
    test -d /usr/ucb/bin       && PATH=/usr/ucb/bin:${PATH}
    test -d /usr/ccs/bin       && PATH=/usr/ccs/bin:${PATH}
    test -d /usr/aCC/bin       && PATH=/usr/aCC/bin:${PATH}
    test -d /usr/CC/bin        && PATH=/usr/CC/bin:${PATH}
    test -d /usr/langtools/bin && PATH=/usr/langtools/bin:${PATH}
    test -d /usr/contrib/bin   && PATH=/usr/contrib/bin:${PATH}
    test -d /usr/gnu/bin       && PATH=/usr/gnu/bin:${PATH}
    test -d /usr/sfw/bin       && PATH=/usr/sfw/bin:${PATH}
    test -d /usr/local/bin     && PATH=/usr/local/bin:${PATH}

    # X11 paths
    test -d /usr/dt/bin      && PATH=/usr/dt/bin:${PATH}
    test -d /usr/vue/bin     && PATH=/usr/vue/bin:${PATH}
    test -d /usr/openwin/bin && PATH=/usr/openwin/bin:${PATH}
    test -d /usr/X11R7/bin   && PATH=/usr/X11R7/bin:${PATH}
    test -d /usr/X11R6.1/bin && PATH=/usr/X11R6.1/bin:${PATH}
    test -d /usr/X11R6/bin   && PATH=/usr/X11R6/bin:${PATH}
    test -d /usr/X11R5/bin   && PATH=/usr/X11R5/bin:${PATH}
    test -d /usr/bin/X11     && PATH=/usr/bin/X11:${PATH}
    test -d /usr/X11/bin     && PATH=/usr/X11/bin:${PATH}

    test -d /usr/contrib/bin/X11 && \
        PATH=/usr/contrib/bin/X11:${PATH}

    # Java
    test -d /usr/java/bin && PATH=/usr/java/bin:${PATH}

    # Sun Studio
    test -d /opt/SUNWspro/bin && PATH=/opt/SUNWspro/bin:${PATH}

    # KDE
    test -d /opt/kde/bin && PATH=/opt/kde/bin:${PATH}

    # IXI
    test -d /usr/lib/X11/IXI/XDesktop/bin && \
        PATH=/usr/lib/X11/IXI/XDesktop/bin:${PATH}
    test -d /usr/lib/X11/IXI/XDesktop/i3sco0322 && \
        PATH=/usr/lib/X11/IXI/XDesktop/i3sco0332:${PATH}

    # Generic stuff in /opt
    test -d /opt/bin && PATH=/opt/bin:${PATH}

    # Subdirs in /opt
    for dir in $(find /opt -maxdepth 2 -type d -name bin -print 2>/dev/null)
    do
        PATH=${dir}:${PATH}
    done
}

buildLibraryPaths() {
    LIBRARY_PATH=""

    # /lib is always first
    LIBRARY_PATH=/lib

    test -d /usr/lib       && LIBRARY_PATH=/usr/lib:${LIBRARY_PATH}
    test -d /usr/ucb/lib   && LIBRARY_PATH=/usr/ucb/lib:${LIBRARY_PATH}
    test -d /usr/ccs/lib   && LIBRARY_PATH=/usr/ucb/lib:${LIBRARY_PATH}
    test -d /usr/gnu/lib   && LIBRARY_PATH=/usr/gnu/lib:${LIBRARY_PATH}
    test -d /usr/sfw/lib   && LIBRARY_PATH=/usr/sfw/lib:${LIBRARY_PATH}
    test -d /usr/local/lib && LIBRARY_PATH=/usr/local/lib:${LIBRARY_PATH}

    test -d /usr/dt/lib      && LIBRARY_PATH=/usr/dt/lib:${LIBRARY_PATH}
    test -d /usr/openwin/lib && LIBRARY_PATH=/usr/openwin/lib:${LIBRARY_PATH}
    test -d /usr/X11R7/lib   && LIBRARY_PATH=/usr/X11R7lib:${LIBRARY_PATH}
    test -d /usr/X11R6.1/lib && LIBRARY_PATH=/usr/X11R6.1/lib:${LIBRARY_PATH}
    test -d /usr/X11R6/lib   && LIBRARY_PATH=/usr/X11R6/lib:${LIBRARY_PATH}
    test -d /usr/X11R5/lib   && LIBRARY_PATH=/usr/X11R5/lib:${LIBRARY_PATH}
    test -d /usr/X11/lib     && LIBRARY_PATH=/usr/X11/lib:${LIBRARY_PATH}
    test -d /usr/lib/X11     && LIBRARY_PATH=/usr/lib/X11:${LIBRARY_PATH}

    test -d /opt/kde/lib && LIBRARY_PATH=/opt/kde/lib:${LIBRARY_PATH}
    test -d /opt/lib     && LIBRARY_PATH=/opt/lib:${LIBRARY_PATH}
}

buildManPaths() {
    local _lang="en_US.ISO8859-1"

    MANPATH=""
    test -d ${HOME}/man          && MANPATH=${HOME}/man:${MANPATH}
    test -d /usr/man             && MANPATH=/usr/man:${MANPATH}
    test -d /usr/share/man       && MANPATH=/usr/share/man:${MANPATH}
    test -d /usr/local/man       && MANPATH=/usr/local/man:${MANPATH}
    test -d /usr/local/share/man && MANPATH=/usr/local/share/man:${MANPATH}
    test -d /opt/man             && MANPATH=/opt/man:${MANPATH}
    test -d /usr/dt/man          && MANPATH=/usr/dt/man:${MANPATH}
    test -d /usr/openwin/man     && MANPATH=/usr/openwin/man:${MANPATH}
    test -d /usr/X11R7/man       && MANPATH=/usr/X11R7/man:${MANPATH}
    test -d /usr/X11R6.1/man     && MANPATH=/usr/X11R6.1/man:${MANPATH}
    test -d /usr/X11R6/man       && MANPATH=/usr/X11R6/man:${MANPATH}
    test -d /usr/X11R5/man       && MANPATH=/usr/X11R5/man:${MANPATH}
    test -d /usr/X11/man         && MANPATH=/usr/X11/man:${MANPATH}
    test -d /usr/X/man           && MANPATH=/usr/X1/man:${MANPATH}
    test -d /usr/ucb/man         && MANPATH=/usr/ucb/man:${MANPATH}
    test -d /usr/ccs/man         && MANPATH=/usr/ucb/man:${MANPATH}
    test -d /usr/gnu/man         && MANPATH=/usr/gnu/man:${MANPATH}
    test -d /usr/sfw/man         && MANPATH=/usr/sfw/man:${MANPATH}

    # Solaris Studio.
    test -d /opt/SUNWspro/man && MANPATH=/opt/SUNWspro/man:${MANPATH}

    # UnixWare
    test -d /usr/lib/scohelp/${_lang}/man && \
        MANPATH=/usr/lib/scohelp/${_lang}/man:${MANPATH}
}

getProgramPath() {
    local wanted="$1"
    local got=$(type "${wanted}" 2>/dev/null | cut -d\  -f3)

    if [ ! "${got}" ]
    then
        return 0
    fi

    echo "${got}"
}

buildVariables() {
    local have_less=$(getProgramPath      "less")
    local have_more=$(getProgramPath      "more")
    local have_pg=$(getProgramPath        "pg")
    local have_vim=$(getProgramPath       "vim")
    local have_vi=$(getProgramPath        "vi")
    local have_dircolors=$(getProgramPath "dircolors")
    local have_ttytype=$(getProgramPath   "ttytype")

    if [ -n "${have_dircolors}" ]
    then
        eval `${have_dircolors}`
    fi

    if [ -n "${have_less}" ]
    then
        PAGER="${have_less}"
    elif [ -n "${have_more}" ]
    then
        PAGER="${have_more}"
    elif [ -n "${have_pg}" ]
    then
        PAGER="${have_pg}"
    else
        unset PAGER
    fi

    if [ -n "${have_vim}" ]
    then
        EDITOR="${have_vim}"
    elif [ -n "${have_vi}" ]
    then
        EDITOR="${have_vi}"
    else
        unset EDITOR
    fi

    if [ -n "${have_ttytype}" ]
    then
        TTYTYPE="${have_ttytype}"
    else
        unset TTYTYPE
    fi
}

# =======================================================================
# = Settings
# =

buildPaths
buildManPaths
buildVariables
buildLibraryPaths

# If VUE is set, then set DT.  This makes life easier.
if [ "$VUE" ]
then
    DT=${VUE}
    export DT
fi

# If FACETUSER is set, then we're in TSM.
if [ "$FACETUSER" ]
then
    TSM=1
    export TSM
else
    unset TSM
fi

# Handle OS-specific jank.
case "${_uname_system}" in
    ULTRIX) buildUltrix ;;
esac

test -z "${LOGNAME}" && LOGNAME="$(logname)"
export $LOGNAME

test -z "${PWD}" && PWD="${HOME}"
export PWD

test -n "${PAGER}"        && export PAGER
test -n "${EDITOR}"       && export EDITOR
test -n "${PATH}"         && export PATH
test -n "${MANPATH}"      && export MANPATH
test -n "${LIBRARY_PATH}" && export LIBRARY_PATH
test -n "${TTYTYPE}"      && export TTYTYPE

MAIL="${_dir_mail_prefix}/mail/${LOGNAME}"
export MAIL

if [ -f "${HOME}/.bashrc" -a -r "${HOME}/.bashrc" ]
then
    BASH_ENV="${HOME}/.bashrc"
    export BASH_ENV
fi

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

# We only want to set up for interactive environments when we are
# actually in an ineractive environment.
#
# This will prevent this when running during CDE session startup.
if [ ! "$DT" ]
then
    case "${_uname_system}" in
        Linux)
            ;;
        *)
            stty sane 2>/dev/null
            stty erase '^h' 2>/dev/null
            stty intr  '^c' 2>/dev/null
            stty kill  '^u' 2>/dev/null

            # h = hash commands as they are looked up.
            # i = interactive shell
            # m = monitor (job control)
            # B = brace expansion
            # H = history expansion
            case $- in
                *m*) stty susp '^z' 2>/dev/null ;;
            esac
    
            # Detect the terminal.
            if [ "${TSM}" == "" -a -f "${TTYTYPE}" ]
            then
                eval `${TTYTYPE} -s`
            fi
            ;;
    esac

    # Uncomment this to disable logging out via ^D.
#   set -o ignoreeof

    # Display the MOTD if the system's /etc/profile does not already
    # display it.
    (grep motd /etc/profile >/dev/null 2>/dev/null) || {
        test -s /etc/motd && cat /etc/motd
    }

    # Terminal-specific wrangling.
    case "${TERM}" in
        7009*)
            # The 700/9x family work better with the terminal type
            # set to `hp'.
            export TSMTERM="${TERM}"
            export TERM=hp
            ;;
    esac

    echo "Terminal is ${TERM}."

    # Set up for TSM
    if [ "${TSM}" ]
    then
        echo "TSM: Terminal will be ${TSMTERM}."
        set -o vi; echo "TSM: VI mode enabled."
    fi
fi

# =======================================================================
# = Aliases
# =

_ls_suffix=""
case "${TERM}" in
    linux)   _ls_suffix=" --color=yes" ;;
    rxvt)    _ls_suffix=" --color=yes" ;;
    *color*) _ls_suffix=" --color=yes" ;;
    vt340*)  _ls_suffix=" --color=auto" ;;
    vt525*)  _ls_suffix=" --color=auto" ;;
    putty)   _ls_suffix=" --color=auto" ;;
esac

alias ls="ls -F${_ls_suffix}"
alias la="ls -alF${_ls_suffix}"
alias lc="ls -aCF${_ls_suffix}"
alias ll="ls -alF${_ls_suffix}"

# =======================================================================
# = Exiting
# =

unset _uname_system
unset _uname_machine
unset _ls_suffix
unset _default_term
unset _dir_mail_prefix
unset getProgramPath
unset buildUltrix
unset buildPaths
unset buildManPaths
unset buildLibraryPaths
unset buildVariables

# EOF
 
 
Return to top
 
Created: