Nexenta bash script uses /usr/sun/bin/sed instead of /usr/bin/sed
3
votes
3
answers
1093
views
I'm using a script for Linux and for Solaris (Nexenta).
This line works on Linux, but not on solaris (but when run from shell it works):
cat "pg_hba.conf" | sed "0,/^local/{s/md5/trust/}"
The error message is:
sed: command garbled: 0,/^local/{s/md5/trust/}
After some research, I found out that the
sed
that bash uses in the script is different.
from shell: /usr/bin/sed
from script: /usr/sun/bin/sed
I want to make the script use /usr/bin/sed
.
What I tried to do:
1. call sed
with full path. Same results. It seems that it is still uses the other sed
...
2. tried to call it via bash -l
. Same results.
3. tried to declare a different command: S=/usr/lib/sed
and use $S
instead. Same results.
4. checked PATH - both cmd and script have /usr/bin
in it.
5. Tried replacing the double quotes to single. Same results.
6. tried running the sed with -r flag. Output is :
`# /usr/xpg4/bin/sed -r
/usr/xpg4/bin/sed: illegal option -- r
Usage: sed [-n] script [file...]
sed [-n] [-e script]...[-f script_file]...[file...]`
HELP??
What I need to do is to replace the first match of "md5" with "trust" on the first line that starts with "local"). I know I can do it otherwise but I the sed
issue is itching me too much!
# EDIT:
I hope this makes a little order...
1. PATH from login shell = /usr/local/ctera/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/ctera/apache-ant-1.8.2/bin
2. PATH from script =
/usr/sbin:/usr/bin:/usr/local/ctera/apache-ant-1.8.2/bin:/usr/local/ctera/apache-ant-1.8.2/bin
3. PATH from script when PATH=$(command -p getconf PATH):$PATH
is called =
/usr/xpg4/bin:/usr/ccs/bin:/usr/bin:/opt/SUNWspro/bin:/usr/xpg4/bin:/usr/ccs/bin:/usr/bin:/opt/SUNWspro/bin:/usr/sbin:/usr/bin:/usr/local/ctera/apache-ant-1.8.2/bin:/usr/local/ctera/apache-ant-1.8.2/bin
4. truss -f sed
from login shell calls /usr/bin/sed
5. truss -f sed
from script calls /usr/sun/bin/sed
6. truss -f /usr/bin/sed
from script calls /usr/sun/bin/sed
!!!
7. After setting PATH=$(command -p getconf PATH):$PATH
:
7.1 truss -f sed
from script calls /usr/xpg4/bin/sed
7.2 truss -f /usr/bin/sed
from script calls /usr/sun/bin/sed
!!!
#MORE INFO:
Commands output: (run both from shell prompt and from within the script)
1. truss -ft execve /usr/bin/sed q
as shell command:
8604: execve("/usr/bin/sed", 0x08047D20, 0x08047D2C) argc = 2
from script:
8545: execve("/usr/sun/bin/sed", 0x08047768, 0x08047774) argc = 2
2. file /usr/bin/sed
as shell command:
/usr/bin/sed: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), stripped
from script:
`file: /usr/bin/sed zero size or zero entry ELF section - ELF capabilities ignored
file: /usr/bin/sed: can't read ELF header
/usr/bin/sed: data`
3. ls -l /usr/bin/sed
as shell command:
-rwxr-xr-x 1 root root 96440 May 31 2008 /usr/bin/sed
from script:
-rwxr-xr-x 1 root root 96440 May 31 2008 /usr/bin/sed
4. ls -ld $(type -pa sed)
as shell command:
`-rwxr-xr-x 1 root root 96440 May 31 2008 /bin/sed
-rwxr-xr-x 1 root root 96440 May 31 2008 /usr/bin/sed`
from script:
-rwxr-xr-x 1 root root 96440 May 31 2008 /usr/bin/sed
5. md5sum $(type -pa sed)
as shell command:
`385361c5111226c8eac8e25b53fed29c /bin/sed
385361c5111226c8eac8e25b53fed29c /usr/bin/sed`
from script:
385361c5111226c8eac8e25b53fed29c /usr/bin/sed
* The script is invoced by JAVA code.
* uname -a
SunOS cteraportal 5.11 NexentaOS_134f i86pc i386 i86pc Solaris
* This might add info about the sed
version on my machine
~# ll find / -name sed
-rwxr-xr-x 1 root root 96440 May 31 2008 /usr/bin/sed
-r-xr-xr-x 1 root bin 35656 Sep 7 2010 /usr/sun/bin/sed
-r-xr-xr-x 1 root bin 32104 Sep 7 2010 /usr/ucb/sed
-r-xr-xr-x 1 root bin 35636 Sep 7 2010 /usr/xpg4/bin/sed
/usr/share/doc/sed:
total 113
-rw-r--r-- 1 root root 168 Jun 21 2005 AUTHORS.gz
-rw-r--r-- 1 root root 2507 Jun 21 2005 BUGS.gz
-rw-r--r-- 1 root root 6584 Feb 3 2006 NEWS.gz
-rw-r--r-- 1 root root 285 Jun 21 2005 README.gz
-rw-r--r-- 1 root root 1071 Jan 12 2006 THANKS.gz
-rw-r--r-- 1 root root 4806 May 31 2008 changelog.Debian.gz
-rw-r--r-- 1 root root 32312 Feb 3 2006 changelog.gz
-rw-r--r-- 1 root root 796 May 31 2008 copyright
drwxr-xr-x 2 root root 3 May 30 2011 examples
drwxr-xr-x 2 root root 3 May 30 2011 sed-4.1.5
-rw-r--r-- 1 root root 56538 May 31 2008 sedfaq.txt.gz
Asked by csny
(1585 rep)
Aug 18, 2014, 03:47 PM
Last activity: Aug 21, 2014, 12:03 PM
Last activity: Aug 21, 2014, 12:03 PM