[PATCH] Remove . from $PATH
Yann E. MORIN
yann.morin.1998@anciens.enib.fr
Thu Jul 29 17:22:00 GMT 2010
Johannes, All,
On Thursday 29 July 2010 17:19:16 Johannes Stezenbach wrote:
> Remove . from $PATH
[--SNIP--]
> diff -r c5a2e4ee7fb8 scripts/functions
> --- a/scripts/functions Mon Jul 26 00:07:17 2010 +0200
> +++ b/scripts/functions Thu Jul 29 15:34:42 2010 +0200
> @@ -137,6 +137,22 @@
> CT_DoLog ${level:-INFO} "(elapsed: ${elapsed_min}:${elapsed_sec}.${elapsed_csec})"
> }
>
> +# Remove entries referring to ., /tmp and non-existing directories from $PATH
> +# Usage: CT_SanitizePath
> +CT_SanitizePath() {
> + local new
> + local tmp
> + local IFS=:
> + for p in $PATH; do
> + tmp=`(cd /tmp; cd $p 2>/dev/null || :; pwd -P)`
No need to enclose it in a sub-shell. Also, the rest of the code
does not use `blah`, but uses $(blah).
The ':' is absolutely valid, but a bit non-trivial. I prefer to be
really explicit and call 'true'.
So I'm changing that line to:
tmp="$( cd /tmp; cd "${p}" 2>/dev/null || true; pwd -P )"
> + if [ "$tmp" != "/tmp" ]; then
Using /tmp as a default if the path is not found is a bit hacky! :-P
And replacing '.' with $(pwd) is no-less hacky! That's a clever way
to test everything in a single go! :-)
I'll add that as a morecomplete explanation.
> + new="$new${new:+:}$p"
> + fi
> + done
> + PATH="$new"
> + return 0
> +}
> +
> # Abort the execution with an error message
> # Usage: CT_Abort <message>
> CT_Abort() {
Thank you!
Regards,
Yann E. MORIN.
--
.-----------------.--------------------.------------------.--------------------.
| Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ |
| +33 223 225 172 `------------.-------: X AGAINST | \e/ There is no |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. |
'------------------------------^-------^------------------^--------------------'
--
For unsubscribe information see http://sourceware.org/lists.html#faq
More information about the crossgcc
mailing list