Làm thế nào để thực thi kịch bản python từ bàn điều khiển mà không cần viết đường dẫn đầy đủ?


8

Tôi có một vài tập lệnh python trên / usr / share / scripts / mà tôi thường sử dụng và tôi muốn có thể thực thi chúng bằng cách chỉ viết tên và không phải là đường dẫn đầy đủ, làm thế nào tôi có thể làm điều này?

echo $ PATH cho tôi thấy:

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

Vì vậy, tôi đã thử viết trên thiết bị đầu cuối:

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

Không có lỗi nào được hiển thị và echo $ PATH hiện hiển thị đường dẫn tập lệnh mới của tôi, nhưng khi tôi chạy scriptName, tôi nhận được lệnh không tìm thấy.

Tôi đang làm gì sai?


Làm thế nào bạn làm điều đó ngay trước khi?
Ignacio Vazquez-Abrams

Tôi đã không làm điều đó trước đây.
grerdas

Bạn đã không chạy chúng? Tôi nghĩ bạn nói rằng bạn đã sử dụng chúng thường xuyên ...
Ignacio Vazquez-Abrams

@Ignacio Vazquez-Abrams: Ồ tôi không hiểu câu hỏi của bạn xin lỗi, tôi đã chạy chúng như "/usr/share/scripts/scriptName.py args"
grerdas

Câu trả lời:


9

Đặt quyền thực thi cho tập lệnh python bằng "chmod + x *"
Bây giờ bạn có hai tùy chọn:

  • Thêm thư mục script của bạn vào biến env PATH hoặc
  • Tạo các liên kết tượng trưng cho các tập lệnh của bạn từng cái một (hoặc viết một tập lệnh khác để làm tương tự) trong /usr/local/binthư mục.

Thí dụ:
[mzed@node02 test]$ vim printme.py

Nội dung của tập tin:

#!/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 ~]$

Tôi hy vọng điều này sẽ giúp bạn.


Bất kỳ khả năng để tạo một phiên bản cho Windows? (Tôi biết đây là câu hỏi của Linux)
Iulian Onofrei 20/03/2015

1

Được rồi, có lẽ tôi chỉ là trường học cũ ...
Trong / usr / bin thêm tập lệnh shell với tiêu đề #! / Bin / bash và không có phần mở rộng .sh. Sau đó, trong các kịch bản chỉ cần chạy python tuyệt đối.

Tại sao tôi nghĩ nó tốt hơn các câu trả lời khác:
Không yêu cầu chmod-ing các tập lệnh của bạn để làm cho chúng có thể thực thi được.
Không yêu cầu đổi tên tập lệnh của bạn.


Đừng quên các đối số.
juanitogan

0

Xin lỗi vì đã đề xuất một điều cơ bản .. Bạn đã thử "scriptname.py", thay vì chỉ "scriptname"?

Ngoài ra, tất cả các tập lệnh cần phải có quyền thực thi (bạn có thể làm điều đó bằng cách phát hành "chmod + x script.py") .. Đánh giá từ nhận xét của bạn ở trên, vì bạn đã chạy chúng như "/ usr / share / scripts / scriptName. py args ", họ nên có quyền thực thi.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.