Bagaimana cara menjalankan skrip di direktori yang berbeda?

51

Saya mencoba ini

./home/user/scripts/someScript

tetapi tidak berhasil

tidak ada berkas atau direktori seperti itu

ada ide?

UAdapter
sumber
2
Jelas tidak ada file atau direktori seperti itu. Jadi Anda memberikan jalan yang salah. Titik di sana tidak berarti "mengeksekusi". Itu hanya bagian dari jalan. Dalam shell Anda biasanya mengetik file yang akan dieksekusi atau perintah (yang sebenarnya juga file) :)
Pithikos
singkirkan periode awal itu dan coba lagi. Atau, ~ / skrip / someScript juga akan berfungsi. juga ingat `` qoutes dalam pikiran, dan program exec ($ man exec)
j0h

Jawaban:

61

Titik utama dalam perintah Anda berarti "relatif ke direktori saat ini". Hapus itu dan itu akan merujuk ke "file someScriptdi direktori /home/user/scripts:

/home/user/scripts/someScript

Jika Anda mendapatkan "Izin ditolak", itu karena Anda tidak memiliki izin yang memadai untuk mengakses file di direktori pengguna lain atau karena file tersebut tidak dapat dieksekusi. Untuk membuatnya dapat dieksekusi, jalankan:

chmod +x /home/user/scripts/someScript
Lekensteyn
sumber
35

Jika skrip Anda perlu mengakses sumber daya di folder yang sama dengan tempat ia dijalankan, dan Anda menetapkannya sebagai jalur relatif, maka skrip Anda akan rusak.

Saya selalu menambahkan a cd $(dirname $0)ke kepala skrip saya sehingga folder yang berisi skrip tersebut akan menjadi folder root.

naisanza
sumber
6

Hapus .

Jika Anda membuat skrip dapat dieksekusi dengan chmod 755 <nameofscript>menjalankannya, Anda hanya perlu mengetikkan lintasan ke skrip.

Ketika Anda melihat ./scriptsedang digunakan itu memberi tahu shell bahwa skrip terletak pada direktori yang sama Anda menjalankannya. Untuk menggunakan path lengkap yang Anda ketikkan sh /home/user/scripts/someScript.

Bruno Pereira
sumber
sh /path/to/fileberbeda dari /path/to/file. shmenjalankan /bin/shyang terhubung ke /bin/dash.
Lekensteyn
Hanya membuat sesuatu yang jelas pada contoh yang Anda lihat di internet, biasanya Anda melihat sh ./somescriptyang juga dapat diketik sebagai `sh / path / to / script / scriptitself '.
Bruno Pereira