diff options
author | jilles <jilles@FreeBSD.org> | 2009-12-31 17:44:24 +0000 |
---|---|---|
committer | jilles <jilles@FreeBSD.org> | 2009-12-31 17:44:24 +0000 |
commit | 9f56916a97d5af44789eba5f567e44a49dbec53c (patch) | |
tree | ced57aab1f0f22eec1c1982336d0fcd7e9609583 | |
parent | 8e6aa134e5ad932e4809cecaf9117c734ef3a9c7 (diff) | |
download | FreeBSD-src-9f56916a97d5af44789eba5f567e44a49dbec53c.zip FreeBSD-src-9f56916a97d5af44789eba5f567e44a49dbec53c.tar.gz |
sh: Use PATH= assignment in type.
Example:
PATH=/var/empty; PATH=/bin type ls
-rw-r--r-- | bin/sh/exec.c | 2 | ||||
-rw-r--r-- | tools/regression/bin/sh/builtins/type2.0 | 26 |
2 files changed, 27 insertions, 1 deletions
diff --git a/bin/sh/exec.c b/bin/sh/exec.c index 02cf91e..c9f9a26 100644 --- a/bin/sh/exec.c +++ b/bin/sh/exec.c @@ -838,5 +838,5 @@ typecmd_impl(int argc, char **argv, int cmd, const char *path) int typecmd(int argc, char **argv) { - return typecmd_impl(argc, argv, TYPECMD_TYPE, pathval()); + return typecmd_impl(argc, argv, TYPECMD_TYPE, bltinlookup("PATH", 1)); } diff --git a/tools/regression/bin/sh/builtins/type2.0 b/tools/regression/bin/sh/builtins/type2.0 new file mode 100644 index 0000000..fe44d95 --- /dev/null +++ b/tools/regression/bin/sh/builtins/type2.0 @@ -0,0 +1,26 @@ +# $FreeBSD$ + +failures=0 + +check() { + if ! eval "$*"; then + echo "Failed: $*" + : $((failures += 1)) + fi +} + +check 'PATH=/libexec type ld-elf.so.1 >/dev/null' +check '! PATH=/libexec type ls 2>/dev/null' + +PATH=/libexec:$PATH + +check 'type ld-elf.so.1 >/dev/null' + +PATH=/libexec + +check 'type ld-elf.so.1 >/dev/null' +check '! type ls 2>/dev/null' +check 'PATH=/bin type ls >/dev/null' +check '! PATH=/bin type ld-elf.so.1 2>/dev/null' + +exit $((failures > 0)) |