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:
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.
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 '.
Jawaban:
Titik utama dalam perintah Anda berarti "relatif ke direktori saat ini". Hapus itu dan itu akan merujuk ke "file
someScript
di direktori/home/user/scripts
: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:
sumber
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.sumber
Hapus
.
Jika Anda membuat skrip dapat dieksekusi dengan
chmod 755 <nameofscript>
menjalankannya, Anda hanya perlu mengetikkan lintasan ke skrip.Ketika Anda melihat
./script
sedang digunakan itu memberi tahu shell bahwa skrip terletak pada direktori yang sama Anda menjalankannya. Untuk menggunakan path lengkap yang Anda ketikkansh /home/user/scripts/someScript
.sumber
sh /path/to/file
berbeda dari/path/to/file
.sh
menjalankan/bin/sh
yang terhubung ke/bin/dash
.sh ./somescript
yang juga dapat diketik sebagai `sh / path / to / script / scriptitself '.