Bash scripting problems
Nifty Hat Mitch
mitch48 at sbcglobal.net
Mon Jan 17 22:46:01 UTC 2005
On Sat, Jan 08, 2005 at 05:41:11PM +0100, Alexander Dalloz wrote:
> Am Sa, den 08.01.2005 schrieb Chadley Wilson um 17:29:
>
> > I have this issue:
> > in /root/.bashrc there is an alias which breaks my script in the following
> > way:
> > When I need to copy or del a file the rm -i and cp -i are preventing things
> > from running smoothly.
> >
> > I have tried numerous tricks none work?
> >
> > could some-one please show me how you work around this without editing the
> > basrc files?
>
> unalias cp
>
> at top of your script.
Get them all! (unalias -a) aliases make scripts non portable and hard
to debug as you found.
unalias [-a] [name ...]
Remove each name from the list of defined aliases. If
-a is supplied, all alias definitions are removed. The
return value is true unless a supplied name is not a
defined alias.
Since this is a script in /root/ I assume it is running more often as
root than not. Thus, a better solution in this case might be
CP=/bin/cp
$CP /tmp/a /tmp/b
This lets you use the safer $CP in your script. The advantage is that
trojan programs/ scripts that might be hidden in $PATH will not be
found. This is very important for systems where a person might "su"
in contrast to "su - ". i.e. The first ("su") does not tidy up $PATH
and bad things might happen. Since this is in /root the script should
also be setting $PATH and not depending on it.
Do compare and contrast CP=/bin/cp and CP="/bin/cp "!
Other scripts (application drivers) often depend on the users $PATH
so full path names are the most common solution.
For completeness \cp also works to squash the alias.
--
T o m M i t c h e l l
spam unwanted email.
SPAM, good eats, and a trademark of Hormel Foods.
More information about the fedora-list
mailing list