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?

grerdas
sumber
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.

mj.scintilla
sumber
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.

RobotHumans
sumber
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.

Vinay
sumber