Shasum yerine shsum yerine shasum yerine nasıl konulur?


1

Birden fazla platformda çalışması gereken bir testim var. Diğer tüm platformlarda, test kullanıyor sha1sum, ancak Mac OSX El Capitan'ımda, böyle bir program yüklü değil shasum, bunun yerine iyi çalışıyor.

Ben bir bağlantı oluşturmak için çalıştık /usr/bin/sha1sumiçin /usr/bin/shasum, ama bu bile kök olarak, başarısız:

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

Daha sonra koydum /usr/local/bin:

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

Ve iş gibi görünüyor:

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

Ancak, şimdi test shaumsum bulma test koşum hala başarısız oluyor:

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.

Ben de kullanmayı denedim alias sha1sum=shasumama emniyet kemeri ile:

sh: line 1: sha1sum: command not found

Koşumun başarısız olduğunu buldum çünkü kullanmak shyerine 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

Öyleyse neden olmasıdır sha1sumaltında çalıştırmak için başarısız olur shama shasumçalışır ve sha1sumaltında çalışır bashve nasıl alabilirim sha1sumaltında çalıştırmak için sh?

Bunun neden başarısız olduğu konusunda da kafam karıştı:

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.

Şimdi bu yorumu /usr/bin/shasumdosyada fark ettim :

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.

Yanıtlar:


0

Çözüm sürümüne link shasumile perlversiyon eklenir:

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

Veya takma adını:

alias sha1sum=shasum5.18

Ya da Darwin'i test uname -sedip senaryodaki shasum5.18bir değişkene atayabilirsiniz sha1sum.
fd0

@ fd0 Daha iyi bir cevap gibi görünüyor, neden göndermiyorsunuz?
WilliamKF

Senaryolarının koşumda nasıl göründüğüne dair net bir fikrim yok.
fd0

0
echo "" | $(which shasum 2>/dev/null || which sha1sum 2>/dev/null) 

çıktı:

adc83b19e793491b1c6ea0fd8b46cd9f32e592fc  -

MacOS / Darwin veya Linux'ta


3
Lütfen bunun soruyu nasıl cevapladığını açıklayın. (Soruyu yanlış anladığınıza inanıyorum.) Lütfen yorumlara cevap vermeyin; cevabınızı daha net ve daha eksiksiz hale getirmek için düzenleyin .
Scott
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.