Какой платформо-независимый способ найти каталог исполняемого файла оболочки в сценарии оболочки?

Согласно POSIX:

http://pubs.opengroup.org/onlinepubs/9699919799/utilities/sh.html

Есть несколько случаев, когда это не очевидно. Например:

If the file is not in the current working directory,
the implementation may perform a search for an executable
file using the value of PATH, as described in Command Search and Execution.

Мой Bash 4.x не работаетследовать этому необязательному правилу (из-за проблем с безопасностью ??), чтобы я могпроверить, как это будет в реальной жизни ...

Какой платформо-независимый способ найти каталог исполняемого файла оболочки в сценарии оболочки?

PS, Такжеdirname $0 В случае неудачи с:

#!/bin/sh
echo $0
dirname $0

когда ты:

$ sh runme.sh
runme.sh
.

Так что вам нужно что-то вроде:

CMDPATH=`cd $(dirname $0); echo $PWD`

Чтобы сделать код зависимым только от встроенных возможностей оболочки, я переписал код так:

PREVPWD=$PWD
cd ${0%${0##*/}}.
CMDPATH=$PWD
cd $PREVPWD

Это выглядит некрасиво, но нене требуются форк любые исполняемые файлы ...

Ответы на вопрос(2)

Ваш ответ на вопрос