Solution is the link to the the version of shasum
with the perl
version appended:
cd /usr/local/bin ln -s /usr/bin/shasum5.18 sha1sum
Or to alias to it:
alias sha1sum=shasum5.18
У меня есть тест, который должен работать на нескольких платформах. На всех других платформах тест используется 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.
Solution is the link to the the version of shasum
with the perl
version appended:
cd /usr/local/bin ln -s /usr/bin/shasum5.18 sha1sum
Or to alias to it:
alias sha1sum=shasum5.18
echo "" | $(which shasum 2>/dev/null || which sha1sum 2>/dev/null)
выход:
adc83b19e793491b1c6ea0fd8b46cd9f32e592fc -
на MacOS / Darwin или Linux