Bagaimana cara mengeksekusi skrip python dari konsol tanpa menulis path lengkap?


8

Saya memiliki beberapa skrip python di / usr / share / scripts / yang sering saya gunakan, dan saya ingin dapat menjalankannya dengan hanya menulis nama dan bukan path lengkap, bagaimana saya bisa melakukan ini?

echo $ PATH menunjukkan kepada saya:

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/opt/real/RealPlayer

Jadi saya mencoba menulis di terminal:

PATH="/usr/share/scripts/:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/opt/real/RealPlayer"
export

Tidak ada kesalahan yang ditampilkan dan gema $ PATH sekarang menunjukkan jalur skrip baru saya, tetapi ketika saya menjalankan scriptName saya mendapatkan perintah tidak ditemukan.

Apa yang saya lakukan salah?


Bagaimana Anda melakukannya dengan benar sebelumnya?
Ignacio Vazquez-Abrams

Saya tidak melakukannya sebelumnya.
grerdas

Anda tidak menjalankannya? Saya pikir Anda mengatakan Anda sering menggunakannya ...
Ignacio Vazquez-Abrams

@Ignacio Vazquez-Abrams: Oh, saya tidak mengerti pertanyaan Anda, maaf, saya menjalankannya seperti "/usr/share/scripts/scriptName.py args"
grerdas

Jawaban:


9

Tetapkan izin yang dapat dieksekusi untuk skrip python dengan "chmod + x *"
Sekarang Anda memiliki dua opsi:

  • Tambahkan direktori skrip Anda ke PATH env variabel, atau
  • Buat tautan simbolis ke skrip Anda satu per satu (atau tulis skrip lain untuk melakukan hal yang sama) dalam /usr/local/bindirektori.

Contoh:
[mzed@node02 test]$ vim printme.py

Isi file:

#!/usr/bin/python
print "This is cool!"

-

[mzed@node02 test]$ mv printme.py printme
[mzed@node02 test]$ chmod +x printme
[mzed@node02 ~]$ cd /usr/local/bin/
[mzed@node02 bin]$ sudo ln -s ~/test/printme .
[mzed@node02 bin]$ ls
deskzilla  grails  grails-debug  printme  startGrails
[mzed@node02 bin]$ cd
[mzed@node02 ~]$ printme 
This is cool!
[mzed@node02 ~]$

Saya harap ini akan membantu Anda.


Adakah kemungkinan untuk membuat versi untuk Windows? (Saya tahu ini adalah pertanyaan Linux)
Iulian Onofrei

1

Oke, mungkin saya hanya sekolah yang lebih tua ...
Di / usr / bin tambahkan skrip shell dengan header #! / Bin / bash dan tidak ada ekstensi .sh. Kemudian dalam skrip tersebut jalankan python absolutepath.

Mengapa saya pikir ini lebih baik daripada jawaban lain:
Tidak memerlukan chmod-ing skrip Anda untuk membuatnya dieksekusi.
Tidak perlu mengganti nama skrip Anda.


Jangan lupakan argumennya.
juanitogan

0

Maaf karena menyarankan hal dasar .. Apakah Anda mencoba "scriptname.py", alih-alih hanya "scriptname"?

Selain itu, semua skrip harus memiliki izin pelaksanaan (Anda dapat melakukannya dengan mengeluarkan "chmod + x script.py") .. Dilihat dari komentar Anda di atas, karena Anda telah menjalankannya seperti "/ usr / share / scripts / scriptName. py args ", mereka harus mengeksekusi izin.

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.