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?


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

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.


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.


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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.