Yanıtlar:
$prompt: /path/to/scriptve enter tuşuna basın. Komut dosyasının yürütme izinlerine sahip olduğundan emin olmanız gerektiğini unutmayın.
/path/to , örneğin cd /path/tokomutla, komut ./scriptdosyanızı çalıştırmak için girebilirsiniz. Unutmayın, bu durumda 'komut dosyasının' önündeki './'
Yine de yürütmenin başka bir yolu (bu sefer yürütme izinlerini ayarlamadan):
bash /path/to/scriptname
komut dosyasını içeren dizine cd yapın veya $ PATH'nizdeki bir bin klasörüne koyun.
sonra yazın
./scriptname.sh
aynı dizindeyse veya
scriptname.sh
bin klasöründeyse.
./scriptname.shbenim için çalışıyor ama scriptname.shveriyor scriptname.sh: command not found. -rwxr-xr-xizinleridir.
cdHerhangi bir yere verilen tavsiye, yeni başlayanlar için başka bir yaygın yanlış anlamaya yol açar . Betiğin dahili olarak belirli bir dizinde çalışmasını gerektiren bağımlılıkları olmadığı sürece (komut dosyasının açıklanamaz bir şekilde işaret etme seçeneği sunmadığı bir veri dosyasını okuma ihtiyacı gibi), cdonu çalıştırmak için hiçbir yere ihtiyaç duymamalısınız ve çok genellikle istemeyecektir.
Yapabilirsin:
sh scriptname.sh
shiçin sembolik bağdır bash, veya komut dosyası herhangi Bash özgü yapısını kullanmadığı takdirde. İlk durumda, bashbunun yerine kullanmak shtek doğru, taşınabilir çözümdür; ikinci durumda, bu belirli sorunun doğru cevabı bu değildir, çünkü OP özellikle bir Bash betiği için tavsiye sormuştur. Yanlış cevabı vermek sorumsuzluktur; farkı kavrayamayan kullanıcılar sık sık burada yayınlıyor ve bu "benim için çalıştı" cevabının neden onlar için işe yaramadığını göstermesi gerekiyor.
Öncelikle bunu kullanarak çalıştırılabilir yapmak zorunda: chmod +x name_of_your_file_script.
Çalıştırılabilir hale getirdikten sonra, bunu kullanarak çalıştırabilirsiniz. ./same_name_of_your_file_script
Cd komutunu kullanarak dizininizi komut dosyasının bulunduğu yere değiştirin
Sonra yazın
bash program-name.sh
cdyere gerek yok ; argüman olarak rastgele karmaşık bir yol adı belirtebilirsiniz bash; aslında, bir dosya adı argümanı alan herhangi bir program bu şekilde çalışır (veya korkunç bir şekilde, zihninizi uyuşturacak şekilde bozulur).
Bu eski bir konu, ama bununla karşılaştım ve kimsenin henüz tam bir cevap vermemesine şaşırdım. İşte başlıyor ...
S: Bunu Terminal'de nasıl gerçekleştiririm?
Karışıklık ve Çatışmalar:
sudoyok. Bu komut, komutları başka bir kullanıcı veya bir 'kök' (yönetici) kullanıcı olarak çalıştırmak için ayrılmıştır. Burada harika bir gönderi .(Komut dosyalarının nasıl çalıştırılacağını yeni öğrenen bir kişi, yeni bir program yüklemek gibi gerçek bir ihtiyaç olmadığı sürece bu komutu kullanmamalıdır. Komut dosyalarınızı koymak için iyi bir yer ~ / bin klasörünüzdedir. Oraya şuradan ulaşabilirsiniz yazarak cd ~/binveya cd $HOME/binterminal komut isteminden. Bu klasörde tam izinlere sahip olacaksınız.)
Unix / Linux tipi bir sistemdeki terminalden "bu komut dosyasını çalıştırmak" için üç şey yapmanız gerekir:
Sisteme komut dosyasının yerini söyleyin. (birini seçin)
/path/to/script.sh). Tam yolu terminale yazarak pwdveya girerek doğrulayabilirsiniz echo $PWD../yol için kullanın (örn. ./script.sh). Kolay.PATHve sadece adı yazın (örn. script.sh). Sistemi PATHyazarak echo $PATHveya echo -e ${PATH//:/\\n}daha düzgün bir liste istiyorsanız doğrulayabilirsiniz .Sisteme betiğin yürütme iznine sahip olduğunu söyleyin. (birini seçin)
chmod +x /path/to/script.shTerminale yazarak "yürütme bitini" ayarlayın .chmod 755 /path/to/script.shNumaraları tercih ederseniz de kullanabilirsiniz . Burada harika bir tabloyla harika bir tartışma var .Sisteme komut dosyası türünü söyleyin. (birini seçin)
BASH /path/to/script.shveya PHP /path/to/script.php) Komut dosyasının .php veya .py gibi bir uzantısı varsa, komut dosyası adının bir parçasıdır ve onu eklemeniz gerekir.#!/bin/bash) olduğunu gördüğüm bir shebang kullanın . Betiğinizin ilk satırı buna sahipseniz, sistem betiği çalıştırmak için bu programı kullanır. Program yazmaya veya uzantı kullanmaya gerek yok.PATHkullanarak ve #!/usr/bin/envardından program adını (örneğin #!/usr/bin/env bashveya #!/usr/bin/env python3) seçmesini de sağlayabilirsiniz . Burada ayrıntılı olarak tartışıldığı gibi artıları ve eksileri var .script.shve script.phpbu komut değişmez dosya adları vardır ve dosya adında bir uzantısı koyarsanız o, size tersi senaryoyu (ve yardımcısı çalıştırdığınızda eklemenize gerek; komut gelmez' eğer Bir uzantınız var, bir tane koymayın). Bu, dosya adından .batveya .exeadından çıkarabileceğiniz DOS'tan farklıdır ve yürütülebilir olarak kabul edilmeleri için küçük bir kümeden bir uzantıya sahip olması gerekir.
Komut dosyasının bulunduğu bir dizin veya klasördeyseniz, dosya iznini çalıştırılabilir modda değiştirerek
chmod +x your_filename.sh
Bundan sonra aşağıdaki komutu kullanarak betiği çalıştıracaksınız.
$ sudo ./your_filename.sh
Yukarıda "." mevcut dizini temsil eder. Not! Bash betiğinin bulunduğu dizinde değilseniz, bu durumda dosyanın bulunduğu dizini kullanarak değiştirirsiniz.
cd Directory_name/write the complete path
komut. Aksi takdirde betiğiniz çalışamaz.
sudo, yanlış ve potansiyel olarak korkunç derecede yanlıştır .
cdyere verilen tavsiyeyi anlamak zor, ama muhtemelen yanlış da.
chmod +x scriptnameVe sonra deneyin./scriptname.