1

У меня есть тест, который должен работать на нескольких платформах. На всех других платформах в тесте используется sha1sum , но на моем Mac OSX El Capitan такая программа не установлена, но shasum отлично работает в качестве замены.

Я пытался создать ссылку из /usr/bin/sha1sum на /usr/bin/shasum , но это не удалось , даже с правами root:

bash-3.2$ cd /usr/bin
bash-3.2$ sudo ln shasum sha1sum
ln: sha1sum: Operation not permitted

Затем я помещаю его в /usr/local/bin:

bash-3.2$ cd /usr/local/bin
bash-3.2$ ln -s /usr/bin/shasum sha1sum

И это похоже на работу:

bash-3.2$ sha1sum -c files.sha1sum
smallData.txt: OK

Но мой тестовый жгут, теперь находящий sha1sum, все еще не работает:

perl version 5.18.2 can't run /usr/local/bin/sha1sum.  Try the alternative(s):

(Error: no alternatives found)

Run "man perl" for more information about multiple version support in
Mac OS X.

Я также попытался использовать alias sha1sum=shasum но проводка не работает с:

sh: line 1: sha1sum: command not found

Я обнаружил, что моя подвеска выходит из строя, потому что она использует sh вместо bash .

sh-3.2$ sha1sum -c files.sha1sum
perl version 5.18.2 can't run /usr/local/bin/sha1sum.  Try the alternative(s):

(Error: no alternatives found)

Run "man perl" for more information about multiple version support in
Mac OS X.
sh-3.2$ shasum -c files.sha1sum
smallData.txt: OK

Так почему же sha1sum не запускается под sh но shasum работает, а sha1sum работает под bash и как мне заставить sha1sum работать под sh?

Я также не понимаю, почему это не удается:

bash-3.2$ echo "sha1sum -c files.sha1sum" | bash
perl version 5.18.2 can't run /usr/local/bin/sha1sum.  Try the alternative(s):

(Error: no alternatives found)

Run "man perl" for more information about multiple version support in
Mac OS X.

Теперь я замечаю этот комментарий в файле /usr/bin/shasum :

The contents of this script should normally never run!  The perl wrapper
should pick the correct script in /usr/bin by appending the appropriate version.
You can try appending the appropriate perl version number.  See perlmacosx.pod
for more information about multiple version support in Mac OS X.

2 ответа2

0

Решением является ссылка на версию shasum с добавленной версией perl :

cd /usr/local/bin
ln -s /usr/bin/shasum5.18 sha1sum

Или псевдоним к нему:

alias sha1sum=shasum5.18
0
echo "" | $(which shasum 2>/dev/null || which sha1sum 2>/dev/null) 

выход:

adc83b19e793491b1c6ea0fd8b46cd9f32e592fc  -

на MacOS/Darwin или Linux

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .