Soru sh kabukta kaynak komut bulunamadı


Sh kabuk kullanan bir linux betiğim var. Bir "kaynak" komutunu kullanan bir satırda bir hataya rastladım. Temel olarak, sh kabukumda "kaynak" bulunmuyor gibi görünüyor. Eğer sh girer ve kaynak girersem şunu elde ederim:

sh: 1: source: not found

Açıkça "kaynak" yüklemeli miyim? Yanlış bir kabuk kabuğum var mı?


76
2017-12-04 12:01


Menşei


Biri, destekleyen bir kabuğun makul olduğunu iddia edebilir source bir "yanlış sürüm" dir. - William Pursell
Ayrıca, hata mesajı source: not found demek ki source Komut doğru değerlendirildi, ancak okuması gereken dosya mevcut değil. - Simon Richter
"Yüklemek" mümkün değil source  Çünkü Kabuğun bir özelliği. Harici bir komut olarak uygulanamaz. - Christopher Schultz


Cevaplar:


/bin/sh Kabuğu taklit etmeye çalışan başka bir kabuktur. Birçok dağıtım kullanımı /bin/bash için sh, destekler source. Ubuntu'da olsa /bin/dash desteklemeyen kullanılır source. Komut dosyasını düzenleyemiyorsanız, onu çalıştıran kabuğu değiştirmeyi deneyin.


63
2017-12-04 12:26



Teşekkürler! / Bin / sh ile / bin / bash yerine Ubuntu üzerinde çalışma yaptınız! Merak ediyorum, neden Ubuntu bash demek oluyor? - Milad
@Milad: Son Ubuntus'ta, /bin/sh aramalar /bin/dash. Geleneksel olarak, /bin/sh denilen /bin/bash sh uyumluluk modu. - choroba
@Milad Ben 14.04 ubuntu üzerinde çalışmadığını düşünüyorum. İşletim sisteminizin sürümü nedir? - Reza Ameri
Belki yardım edin - kaskat komut dosyalarınız varsa, tüm "sh -> bash" isimlerini yeniden adlandırın. Teşekkür ederim. :-) - BG Bruno


Bourne kabuğunda (sh) kullanın. bir dosyaya kaynak komutu

. filename

77
2017-12-04 12:03



Komut dosyasını değiştirmeye gerçekten izin verilmiyor, kırmızı bir sunucuda iyi çalışıyor. Ama bu sunucuda, kaynağa dahil görünüyor - Milad
Eğer varsa source kesinlikle değil sh. - tripleee
Jenkins'de bu tür bir problem vardı ("gizli dosya" olarak saklanan bir dosyaya kaynak oluşturmaya çalışıyorum) ve "." Komuta çözümdü. - Jan Vlcinsky
Bu, sh, dash ve bash ile çalışacağı için en iyi cevap olmalıdır. - akhan
Mac OS (dev ortamı) ve Travis-CI (test ortamı) ile uyumluluk için kullanmak zorundaydım . ./filename. Aksi takdirde, bir sh: 1: .: filename: not found Travis-CI üzerinde test yaparken hata. - Adrien Joly


$ls -l `which sh`
/bin/sh -> dash

$sudo dpkg-reconfigure dash #Select "no" when you're asked
[...]

$ls -l `which sh`
/bin/sh -> bash

O zaman iyi olacak


31
2018-01-07 06:16



Güzel! RHEL ve Ubuntu sunucularını çalıştırıyorum ve Ubuntu ile bunun gibi küçük sorunlarım var. RHEL ve RHEL'i linux gibi çok seviyorum. - radtek
Kabul edilen cevap Ubuntu 14'te çalışmıyor, bu bir tane! - rohithpr


source yerleşmiş bir bashizmdir. Bunu basitçe yaz . yerine.

Örneğin.

. $FILE

# OR you may need to use a relative path (such as in an `npm` script):

. ./$FILE

https://wiki.ubuntu.com/DashAsBinSh#source


8
2017-07-13 19:38





source komut bazı kabuklara yerleştirilmiştir. Bir komut dosyanız varsa, ilk satırda hangi kabuğun kullanılacağını belirtmelidir, örneğin:

#!/bin/bash

7
2017-12-04 12:04



Eh, ben #! / Bin / sh diyor ve başka bir linux üzerinde elle sh girer ve "hangi kaynak" diye sorarsa: kaynak: shell built-in komutu - Milad
oh bu yüzden bu hat bunun içindi. Hep merak etmişimdir. Kocaman teşekkürler! - commonSenseCode


Jenkins Execute Shell komut dosyasını / bin / sh aracılığıyla çalıştırdığı için bu sorun oluşur

Sonuç olarak, / bin / sh "source" kelimesini bilmiyor

Aşağıdaki satırı jug içinde Execute Shell'inizin üstüne eklemeniz yeterlidir.

#!/bin/bash

3
2018-01-25 09:06





Ubuntu'da bir gnu Makefile'de buldum (burada / bin / sh -> bash)

Kullanmalıyım. komutunu ve ayrıca hedef betiğini bir ./ önekiyle belirtin (aşağıdaki örneğe bakın)

kaynak bu durumda işe yaramadı, neden olmasın diye / bin / bash diye çağırması gerektiğinden emin değil ..

SHELL ortam değişkenim de / bin / bash olarak ayarlandı

test:
    $(shell . ./my_script)

Bu örnekte sekme karakteri bulunmadığını unutmayın; yığın değişimi için biçimlendirmek zorunda kaldı.


0
2017-10-07 18:28





kaynak kaynak komutunu çalıştırmak için bir bash yerleşik komuttur, Kök olarak oturum açabilirsiniz.

sudo -s source ./filename.sh


0
2017-08-15 08:42





Bourne kabuğu (sh), yerini bulmak için PATH'yi kullanır source <file>. Kaynak etmeye çalıştığınız dosya yolunda değilse, 'dosya bulunamadı' hatasını alırsınız.

Deneyin:

source ./<filename>

-1
2017-10-08 08:25



Yazı diyor sh: 1: source: not found değil file not found - Cristian Chaparro A.