Bir bash betiği nasıl çalıştırılır?


19

İlk bash senaryomu yazdım:

#!/bin/bash
echo 'hello world!'
exit

Ben bash için doğru bir konuma sahiptir ve çalıştırılabilir olduğunu biliyorum:

$ which bash
/bin/bash
$ chmod +x myscript.sh

Şimdi komut satırından çalıştırmak istiyorum, ancak bir hata alıyorum:

$ myscript.sh
myscript.sh: command not found

Bunun yerine bunu deniyorum ve işe yarıyor:

$ bash myscript.sh
hello world!

Bunu hep böyle yürütmem gerekecek mi? Kendisinden önce başka komut dosyaları yürüttüğümü hissediyorum bash. Bundan önce myscript.sh dosyasını nasıl çalıştırabilirim bash?

Güncelleme: İşte bir bash betiğinin neden ve nasıl yürütüleceğine dair iyi bir açıklama .

Yanıtlar:


28

Dosyayı yürütülebilir yapmalısınız. İle yapabilirsiniz

chmod +x <filename>

betiğinizin adı nerede ve daha sonra ./kabuğa yerel dizinde bir dosya çalıştırması talimatını vermek için onu eklemelisiniz :

./script.sh

Yalnızca içinde bulunduğunuz PATHveya onlara bir yol belirttiğiniz dosyaları çalıştırabilirsiniz . ./, yerel dizin, PATHvarsayılan olarak değil çünkü birisi hain amaçlarla kullanabilir. lsBir dizinde bırakılan bir betik düşünün , bu dizinin içine girin, çalıştırın lsve bu betik kötü bir şey yapıyor.

Siz varken, bash yerine kabuk çalıştırarak daha taşınabilir hale getirmek isteyebilirsiniz:

#!/bin/sh

veya kurulduğu sürece nereye kurulduğuna bakılmaksızın bash çalıştırarak:

#!/usr/bin/env bash

Bunu chmod + x myscript.sh ile zaten yaptım. Yanlış mı yaptım?
Andrew

1
Muhtemelen eksiksiniz. / Cevaba ekledim.
pupeno

1

Fernández'in tavsiyesine ek olarak, bunun gibi bir noktadan önce:

./myscript.sh

Güvenlik nedeniyle, geçerli dizin hiçbir zaman yürütme yoluna dahil edilmez.


1

Bash betiğini çalıştırmanın 3 yolu vardır. Yürütmek istediğiniz komut dosyası olarak myscript.sh ile.

Yöntem 1

betiği, yazma sahibi değilse izin sorunlarını tetikleyecek bir alt işlem olarak yürütün. İzinleri chmod ile değiştirebilirsiniz.

$ chmod + x Instagram Hesabındaki Resim ve Videoları myscript.sh

$ ./myscript.sh

Yöntem 2

komut dosyasını geçerli kullanıcı olarak çalıştır. bash betiği iyi yazılmışsa hata içermemelidir.

$ bash myscript.sh

Yöntem 3

yöntem 2'ye benzer ancak kısa yol. bunun geçerli oturumda bash kabuğunu kullandığınız varsayımına dayandığını unutmayın.

$. myscript.sh

Bu yardımcı olur umarım!:)

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.