setting LIBDIR_IN_LDCONFIG fails if /lib is a symlink to /usr/lib

Tomi Ollila tomi.ollila at iki.fi
Mon May 28 04:41:48 PDT 2018


On Sun, May 27 2018, David Bremner wrote:

> Tomi Ollila <tomi.ollila at iki.fi> writes:
>
>> we could try:
>>
>>     for path in $ldconfig_paths; do
>>         if [ "$path" = "$libdir_expanded" ]; then
>>             libdir_in_ldconfig=1
>>             break
>>         fi
>>         if [ "$path" -ef "$libdir_expanded" ]; then
>>             libdir_in_ldconfig=1
>>             break
>>         fi
>>     done
>>
>
> That looks less horrible than my idea. How portable is it? I guess test
> -ef is not POSIX.

-ef is not POSIX; but probably all shells that are used when executing this
line have builtin test which groks -ef .

  $ dash -c 'test / -ef /' || echo noef
  $ bash -c 'test / -ef /' || echo noef
  $ zsh -c 'test / -ef /' || echo noef
  $ ksh -c 'test / -ef /' || echo noef

but, problem arises when test does not support -ef -- script may exit
prematurely...

  $ ./heirloom-sh/sh -c 'if test / -ef /; then echo foo; else echo bar; fi'
  ./heirloom-sh/sh: test: unknown operator -ef
  zsh: exit 1     ./heirloom-sh/sh -c 'if test / -ef /; then echo foo; ...

OTOH:

  $ dash -c 'if test / -exf /; then echo foo; else echo bar; fi'    /home/too
  test: 1: /: unexpected operator
  bar

... so probably the shells that can succesfully execute our configure 
scripts (heirloom sh definitely will not) will not fail if, for some
reason it could not handle the -ef -option -- that particular test
just would not ever pass.

Tomi

PS: the test/[ problems that had to be mitigated with [ x"$var" = x ]
has been fixed decades ago -- but still we se these in modern scripts
that require bash...

>
> d


More information about the notmuch mailing list