mengeksekusi kode unix dari terminal


0

Saya memiliki direktori di hard drive saya yang berisi koleksi file yang dapat dieksekusi Unix yang saya coba jalankan dari terminal. Ketika saya menelusuri direktori dari terminal itu menunjukkan semua file ada tetapi ketika saya memasukkan nama salah satu executable Unix ia mengatakan '-bash orca: command not found' (executable disebut 'orca'). Jika saya menjelajah ke folder di finder dan mengklik file yang sama, jendela terminal muncul dan menjalankan file. Namun, karena program mengharuskan saya menentukan file input, saya mendapatkan yang berikut dikembalikan:

/Users/damonrobles/Documents/orca_macosx_r2360/orca ; exit;
Damon-Robless-MacBook-Pro:~ damonrobles$ /Users/damonrobles/Documents/orca_macosx_r2360/orca ; exit;
This program requires the name of a parameterfile as argument
For example ORCA TEST.INP 
logout

[Process completed]

Menurut manual program, saya harus memanggil program dari terminal sebagai berikut:

nohup orca Inputfile.inp >& outputfile.out

tetapi ketika saya melakukan ini hanya menghasilkan file output yang mengatakan:

nohup: orca: No such file or directory 

dan mengembalikan saya ke terminal prompt. Saya tidak tahu apa masalahnya, meskipun saya pengguna terminal pemula jadi saya yakin itu adalah sesuatu yang bodoh di pihak saya. Setiap bantuan sangat dihargai! Saya menggunakan MacBook Pro, menjalankan OSX 10.6.8.

Jawaban:


7

Anda akan ingin menggunakan, ./orcabukan hanya orca. Di OS X, direktori saat ini ( .) tidak $PATHsecara default, jadi Anda tidak dapat menjalankan program di direktori saat ini tanpa secara eksplisit menamainya.


4
@Damon Robles: Jika Anda berpikir Anda bisa menambahkan .untuk $PATH, yang bisa dilakukan tapi itu risiko keamanan; itu membuat lebih mudah bagi orang untuk membodohi Anda dalam menjalankan program jahat mereka alih-alih yang standar. Jadi jangan.
Tom Zych

@ Tom Zych: Saya tidak pernah mempertimbangkan risiko keamanan melakukan itu. Terima kasih telah menunjukkannya.
jtbandes

2
selalu memiliki slbiner yang disiapkan dengan baik di homedir Anda, Anda tidak pernah tahu siapa yang mungkin menjalankannya suatu hari ...

@mvds +2 jika saya bisa: D
jtbandes

1
@ Tom: browser umumnya javascript sandbox sehingga tidak bisa menulis ke sistem file.
Wooble

1

Hanya untuk memperluas pada jawaban @jtbandes: Anda dapat (1) menavigasi ke direktori yang berisi orca(seperti yang Anda katakan) dan melakukan apa yang dia katakan, Anda dapat (2) menggunakan path lengkap ke executable seperti / Users / Damon / foo / bar / orca (atau ke file input untuk masalah ini), atau Anda dapat "menautkan" executable ke direktori yang ada di $ PATH Anda. Misalnya, jika orcaada di Desktop, Anda dapat melakukan:

mkdir bin
PATH=$PATH:~/bin;  export PATH
echo $PATH
ln -s ~/Desktop/orca ~/bin
ls -al ~/bin
orca infile > outfile

Untuk menjadikan ini permanen, Anda akan mengubahnya .bash_profiledi direktori home Anda.


1

Salah satu opsi adalah menambahkan

/Users/damonrobles/Documents/orca_macosx_r2360

ke variabel lingkungan PATH Anda, jika Anda akan meninggalkan kode yang terinstal di direktori Documents Anda.

Opsi lain yang dapat Anda pertimbangkan adalah menambahkan ' .' ke PATH Anda.

Meskipun bisa berbahaya (untuk menambahkan ' .' ke PATH), saya bekerja di lingkungan yang cukup bersih yang saya miliki ' .' di depan PATH saya. Itu lebih berbahaya daripada memilikinya di belakang PATH, dan keduanya lebih berbahaya daripada tidak memiliki ' .' pada PATH Anda.

Keuntungan memiliki ' .' di depan adalah saat mengembangkan program, saya tidak harus menentukan ./programuntuk menjalankan salinan lokal alih-alih salinan yang diinstal. Kerugian memiliki ' .' di bagian depan adalah bahwa jika seseorang masuk ke mesin saya dan menciptakan Trojan Horse yang disebut ' ls' (katakanlah) di salah satu direktori saya dan saya jalankan ' ls' di direktori itu, saya menjalankan Trojan Horse mereka alih-alih versi nyata. Jika mereka punya akal, Trojan akan membersihkan sendiri dan menjalankan perintah yang dimaksudkan, yang berarti saya mungkin tidak memperhatikan. Terserah Anda apakah Anda menganggap itu risiko serius atau tidak. Menambahkan '.'di akhir PATH berarti Anda akan menjalankan program di direktori saat ini yang tidak memiliki analog di mana pun di PATH Anda; namun, jika Anda memiliki versi program yang terinstal di, katakanlah, /usr/local/bin(dan itu ada di PATH Anda), maka versi yang diinstal akan dijalankan sesuai preferensi ke versi lokal. Itu mungkin atau mungkin tidak masalah bagi Anda; itu bagi saya jadi saya menempatkan ' .' di depan, tetapi itu adalah risiko yang dipertimbangkan dan dipahami.

YMMV; berhati-hatilah.

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.