Bir Bash Komut Dosyasının Bulunduğu Dizini Komut Dosyasının İçinden Nasıl Bulursunuz?

Bir Bash Komut Dosyasinin Bulundugu Dizini Komut Dosyasinin Icinden Nasil Bulursunuz



Bash betikleriyle çalışırken betik konumunu bilmek faydalı olur. Bu, özellikle ilgili dosya yollarıyla çalışırken veya diğer komut dizilerini veya komut dizisini komut dosyası içinden yürütmeye çalışırken yararlı olabilir. Bu makalede, bir bash betiğinin dizinini betiğin içinden belirlemenin birkaç farklı yoluna göz atacağız.

Bir Bash Komut Dosyasının Bulunduğu Dizini Komut Dosyasının İçinden Nasıl Bulursunuz?

Bash komut dosyası oluştururken, çeşitli görevleri otomatikleştirmek için komut dosyasının konumuna ihtiyaç duyabilirsiniz. Linux'ta iki tür yol vardır:

  • Akraba Yolu: Göreli geçerli çalışma dizinidir.
  • Kesin yol: Bu, dizinin ve dosyaların tam yoludur.

Bir bash betiğinin yerini belirlemenin en yaygın yollarından biri, pwd emretmek. bu pwd emretmek ( çalışma dizini yazdır) geçerli dizini gösterecektir.







Yani, birçok durumda basitçe kullanarak pwd komutu, yalnızca o anda çalışan dizinin yolunu verdiği için çalışmaz.



Örneğin, komut dosyası İndirilenler dizinden yürütülüyor ve masaüstü o zaman çıktı içerecektir /home/usr/Masaüstü bash betik dosyasının konumu değil /home/usr/İndirilenler .



Bu öğretici, bash betik dosyasının bulunduğu dizinin yolunu betiğin içinden almakla ilgilidir.





Bash Betik Dosyasının Bulunduğu Dizin Yolu Nasıl Bulunur?

Bir Bash betiğinin dizinini belirlemenin başka bir yolu da dizin adı emretmek. bu dizin adı komutu bir dosya yolunu bağımsız değişken olarak alır ve yolun dizin bölümünü döndürür.

Kullanmak dizin adı komutu, bir betiğin dizinini belirlemek için, komutu argüman olarak betiğin eğik çizgi olmayan son bileşenlerine kadar olan yolla çağırırsınız.



hakkında daha fazla ayrıntı için dizin adı terminalde aşağıdaki komutları yürütün:

$ Adam dizin adı

Sadece dizin adı çalışmayacak, başka bir komuta ihtiyacımız var. okuma bağlantısı . bu okuma bağlantısı print komutu sembolik bağlantıyı çözdü. Çalıştırarak bu komut hakkında daha fazla bilgi edinin:

$ Adam okuma bağlantısı

Şimdi, komut dosyası oluştur :

$ sudo nano myScript.sh

Ve şunu yazın:

#!/bin/bash

Eko 'Bash komut dosyası yolu $(dirname -- '$(readlink -f – '$0') ' ; ) ';

Komut dosyasını çalıştırmak için şunu kullanın:

$ darbe myScript.sh

Dizini değiştirelim ve çıktının ne olduğunu görelim:

Not: Bir durumda, aşağıdaki çıktıda görülebileceği gibi, dosya yürütülmek yerine kaynaklıysa yukarıdaki komut dosyası çalışmaz:

çıktı /home/sam/Masaüstü oysa betik dosyası içinde mevcut /ev/sam dizin.

Çözüm

Sonuç olarak, bir bash betiğinin dizinini betiğin içinden belirlemenin birçok yolu vardır. bu dizin adı ile birlikte okuma bağlantısı yardımcı programı, bir betiğin dizinini belirlemek için kullanılabilir. Ancak, basitçe kullanmak pwd komutu, yalnızca o anda çalışan dizini verdiği için çalışmaz.