Date: Mon, 22 Sep 2014 11:24:29 -0700 From: leeoliveshackelford@surewest.net To: Freebsd questions <freebsd-questions@freebsd.org> Subject: .bashrc guru needed Message-ID: <e3a6a1a24c1c0af8e75577d8ecf1a8ea@surewest.net>
next in thread | raw e-mail | index | archive | help
Greetings, dear FreeBSD enthusiasts. Is there a bash guru who can help
me correct the following script for .bashrc. I copied this script from a
web page whose location I failed to record, and have forgotten. It is
supposed to write each word of the prompt in a different color, which it
does correctly. This color scheme is generated by the function
bash_prompt(). It is also supposed to write the current directory in an
abridged format in which the portion of the filepath that refers to the
home directory, if any, is replaced by a tilde (~), and then, long path
descriptions are truncated on the left at 25 characters, with two
periods then added. This result is created by the function
bash_prompt_command(). This function does not work. In place of the
value of the variable NEW_PWD, the operating system simply prints the
error message "unbound variable, then generates a prompt line listing
the variable's name, $NEW_PWD, in place of its value. This variable is
given values on three lines, 18, 22, and 24. Where does it loose its
binding? I have made several modifications to the function in an attempt
to get it to work, but to no avail. Following is a partial listing.
BLOCKSIZE="${BLOCKSIZE:-1024}"; export BLOCKSIZE
CVSROOT="${CVSROOT:-/home/ncvs}"; export CVSROOT
TMPDIR="${TMPDIR:-/tmp}"; export TMPDIR
set +H #disables bash!-completion
export PATH=$PATH:$HOME/.local/bin
#Inserted here are a group of alias commands.
# The following statements control the prompt.
export CLICOLOR="YES"
bash_prompt_command() {
# How many characters of the $PWD should be kept
local pwdmaxlen=25
# Indicate that there has been dir truncation
local trunc_symbol=".."
local dir=${PWD##*/}
pwdmaxlen=$(( ( pwdmaxlen < ${#dir} ) ? ${#dir} : pwdmaxlen ))
NEW_PWD=${PWD/#$HOME/~}
local pwdoffset=$(( ${#NEW_PWD} - pwdmaxlen ))
if [ ${pwdoffset} -gt "0" ]
then
NEW_PWD=${NEW_PWD:$pwdoffset:$pwdmaxlen}
else
NEW_PWD=${trunc_symbol}/${NEW_PWD#*/}
fi }
bash_prompt()
{
#Inserted here are a list of variables set to descriptions of various
colors.
local UC=$EMG # user's color
[ $UID -eq "0" ] && UC=$EMR # root's color
PS1="${UC}s ${EMW}${NEW_PWD} ${UC}\$ ${NONE}"
}
PROMPT_COMMAND=bash_prompt_command; bash_prompt; unset bash_prompt
export PROMPT_COMMAND
# End of statements to control prompt
I added the export statements on lines 1, 2, and 3. I added the
semi-colons on line 35, and the export PROMP_COMMAND on line 36. I
inserted the "else" statement on line 23. None of these modifications
helped. What is the programmer telling or trying to tell the interpreter
to do on line 16, "local dir=${PWD/##*/}" ? What is the programmer
telling, or trying to tell the interpreter to do on line 18,
"NEW_PWD=${PWD/#$HOME/~}" ? Please, to those coming from the world of c
programming language, bash syntax seems to be a mystery. Any and all
suggestions will be appreciated. Newby Lee
From owner-freebsd-questions@FreeBSD.ORG Mon Sep 22 18:29:21 2014
Return-Path: <owner-freebsd-questions@FreeBSD.ORG>
Delivered-To: freebsd-questions@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115])
(using TLSv1 with cipher ADH-AES256-SHA (256/256 bits))
(No client certificate requested)
by hub.freebsd.org (Postfix) with ESMTPS id 275DEDFF
for <freebsd-questions@freebsd.org>; Mon, 22 Sep 2014 18:29:21 +0000 (UTC)
Received: from nightmare.dreamchaser.org (nightmare.dreamchaser.org
[12.32.44.142])
(using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits))
(Client did not present a certificate)
by mx1.freebsd.org (Postfix) with ESMTPS id CD3D9162
for <freebsd-questions@freebsd.org>; Mon, 22 Sep 2014 18:29:20 +0000 (UTC)
Received: from breakaway.dreamchaser.org (breakaway.dreamchaser.org.
[12.32.36.73])
by nightmare.dreamchaser.org (8.13.6/8.13.6) with ESMTP id s8MITCe2016305
for <freebsd-questions@freebsd.org>; Mon, 22 Sep 2014 12:29:12 -0600 (MDT)
(envelope-from freebsd@dreamchaser.org)
Message-ID: <54206A78.6070609@dreamchaser.org>
Date: Mon, 22 Sep 2014 12:29:12 -0600
From: Gary Aitken <freebsd@dreamchaser.org>
Reply-To: freebsd@dreamchaser.org
User-Agent: Mozilla/5.0 (X11; FreeBSD amd64;
rv:31.0) Gecko/20100101 Thunderbird/31.0
MIME-Version: 1.0
To: FreeBSD Mailing List <freebsd-questions@freebsd.org>
Subject: pkg autoremove option to just list?
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 7bit
X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-2.0.2
(nightmare.dreamchaser.org [12.32.36.65]);
Mon, 22 Sep 2014 12:29:12 -0600 (MDT)
X-BeenThere: freebsd-questions@freebsd.org
X-Mailman-Version: 2.1.18-1
Precedence: list
List-Id: User questions <freebsd-questions.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/options/freebsd-questions>,
<mailto:freebsd-questions-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/freebsd-questions/>
List-Post: <mailto:freebsd-questions@freebsd.org>
List-Help: <mailto:freebsd-questions-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/freebsd-questions>,
<mailto:freebsd-questions-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Mon, 22 Sep 2014 18:29:21 -0000
Thought this would be easy but couldn't find what I needed.
Is there a way to do the equivalent of "pkg autoremove" without actually doing
the remove -- i.e. to get a list of what pkg autoremove would try to do? I
thought there would be an option for this but didn't see one.
Thanks,
Gary
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?e3a6a1a24c1c0af8e75577d8ecf1a8ea>
