Bash dosyanın mevcut olmadığını söylüyor, ancak var


11

Linksys WRVS4400N ürün yazılımını derlemeye çalışıyorum.

lsvar olduğunu gösterir ama koşmaya çalıştığında bash var olmadığını söyler. Ben de yapabilirim catve bir kabuk komut dosyası değil, yürütülebilir bir dosyadır.


belirli bir dosya için ls -la çıkışı nedir?
user389238

Ansis -rwxrwxrwx 1 1011 1011 31991 18 Mayıs 2006 mkdep
Avery3R

1
bize komut dosyanızdaki satırı ve tam hata mesajını gösterin. "Eksik" dosyayı çağırmaya çalıştığınızda geçerli dizininiz nedir?
glenn jackman

@glenn Onu çağıran senaryom değil, cisco'nun makyaj dosyası, bir vm'de çalıştığı için tam hata mesajını alamıyorum, ancak bash: / pathto / mkdep dosyası veya klasörü bulunamadı
Avery3R

İşte bu trollerin saklandığı yer ...
Atılım

Yanıtlar:


8

Çıktı çıktı file mkdepolduğunu söyledi 32-bit elf. 64 bit VM çalıştırıyorsunuz.

Misal:

$ uname -m
x86_64
$ ls -l ./example 
-rwxr-xr-x 1 root root 92312 2011-08-18 16:52 ./example
$ file ./example 
example: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.8, stripped
$ ./example 
-bash: ./example: No such file or directory

Sadece yeni bir 32-bit VM yapın ve orada derleyin.


1
İa32-libs yüklerseniz, daha sonra çalışması gerekir. 32bit VM oluşturmaya gerek yok.
Phil

5

Yürütülebilir olarak ayarlanmış mı? Değilse, o zaman chmod +x filename. PATH'ınızda mı? Değilse, ./filenamesadece değil de arayın filename.


Onun çalıştırılabilir olarak ayarlanmış, ben ./mkdep denilen yanı sıra tam yolu kullanarak, zar yok yaptım.
Avery3R

Dosyayı sudo olarak çalıştırmanız gerekebilir.
D'Arvit

2

Bir dosyayı yürütmeye çalıştığınızda ve bash bunun olmadığını söylüyor, bazen bash dosyasının bir komut dosyası olduğuna ve ilk satırda (#!) Belirtilen yorumlayıcının mevcut olmadığına inanıyor demektir.

Dosyalar isimlendirilmişse mkdep, çıktısını

./mkdep
file mkdep
hd mkdep | head
strace ./mkdep 2>mkdep.strace.txt

Strace komutu, yapılan sistem çağrıları hakkında bilgi verir, örneğin strace ls 2>ls.taşağıdakileri ls.t'ye koyar

yürütmek ("/ bin / ls", ["ls"], [/ * 22 vars * /]) = 0
brk (0) = 0x8061000
access ("/ etc / ld.so.nohwcap", F_OK) = -1 ENOENT (Böyle bir dosya veya dizin yok)
mmap2 (NULL, 8192, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0) = 0xb7f82000
access ("/ etc / ld.so.preload", R_OK) = -1 ENOENT (Böyle bir dosya veya dizin yok)
open ("/ etc / ld.so.cache", O_RDONLY) = 3
fstat64 (3, {st_mode = S_IFREG | 0644, st_size = 32311, ...}) = 0
mmap2 (NULL, 32311, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7f7a000
kapat (3) = 0
access ("/ etc / ld.so.nohwcap", F_OK) = -1 ENOENT (Böyle bir dosya veya dizin yok)
open ("/ lib / librt.so.1", O_RDONLY) = 3
oku (3, "\ 177ELF \ 1 \ 1 \ 1 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 3 \ 0 \ 3 \ 0 \ 1 \ 0 \ 0 \ 0 \ 240 \ 30 \ 0 \ 0004 \ 0 \ 0 \ 0 "..., 512) = 512
fstat64 (3, {st_mode = S_IFREG | 0644, st_size = 30624, ...}) = 0

(vm üzerinde çalışıyor, her şeyi yazmak için çok tembel) ./mkdep dosya veya klasörü bulunamadı döndürür. mkdep dosyası 32-bit elf exe ve head mkdep ikili verileri döndürür
Avery3R

1
mkdep muhtemelen bu dosyayı üretiyor çünkü ihtiyacı olan bir dosyayı bulamıyor ??
Linker3000

@ linker3000: Hayır, diyor Bash: / dirto / mkdep: dosya veya klasör bulunamadı
Avery3R

@ MMavipc: bunu denemek strace ./mkdep 2>mkdep.strace.txtiçin neler olup bittiğine dair bir fikir vermelisin. Depolardan şerit yüklemeniz gerekebilir.
RedGrittyBrick

1

Senaryonuzdaki IFS'yi değiştiriyor musunuz? Ben de benim komut dosyalarından birinde aynı sorunla karşılaştı ve aynı düşündüm (32 bit dosya 64 bit makinede kabuk komut dosyası tarafından okunuyor). Ama benim durumumda sorun bu değildi. Bunun yerine, IFS'yi virgül ',' olarak değiştiriyordum ve ayrıştırıcıyı bir şekilde karıştırıp bu hataya neden olan yeni bir satıra geri dönüyordum.

Ben sadece IFS herhangi bir değişiklik kaldırıldı ve şimdi gayet iyi çalışıyor !!!

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.