フルパスを書かずにコンソールからPythonスクリプトを実行するにはどうすればよいですか?


8

/ usr / share / scripts /に頻繁に使用するいくつかのpythonスクリプトがあり、フルパスではなく名前を書き込むだけで実行できるようにしたいのですが、どうすればよいですか?

echo $ PATHは私を示しています:

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

だから私は端末で書いてみました:

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

エラーは表示されず、$ PATHに新しいスクリプトパスが表示されますが、scriptNameを実行するとコマンドが見つかりません。

何が悪いのですか?


以前はどうやってやったの?
Ignacio Vazquez-Abrams、

私は前にそれをしませんでした。
グレルダス

あなたはそれらを実行しませんでしたか?あなたはそれらを頻繁に使用したと言っていたと思いました...
イグナシオバスケスエイブラムス

@Ignacio Vazquez-Abrams:ごめんなさい、ごめんなさい、 "
usr / share / scripts / scriptName.py

回答:


9

"chmod + x *"でPythonスクリプトの実行権限を設定し
ます。これで2つのオプションがあります。

  • スクリプトディレクトリをPATH環境変数に追加する、または
  • ディレクトリにスクリプトへのシンボリックリンクを1つずつ作成します(または同じことを行う別のスクリプトを記述します)/usr/local/bin

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

ファイルの内容:

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

これがお役に立てば幸いです。


Windows用のバージョンを作る可能性はありますか?(私はこれがLinuxの質問であることを知っています)
Iulian Onofrei

1

さて、たぶん私はもっと年上の学校です...
/ usr / binに#!/ bin / bashヘッダーと.sh拡張子のないシェルスクリプトを追加します。次に、それらのスクリプトでpython absolutepathを実行します。

他の回答よりも優れていると思う理由:
スクリプトを実行可能にするためにスクリプトをchmodする必要はありません。
スクリプトの名前を変更する必要はありません。


引数を忘れないでください。
juanitogan

0

基本的なことを提案してすみません。「scriptname」だけでなく「scriptname.py」を試してみましたか?

また、すべてのスクリプトには実行権限が必要です(「chmod + x script.py」を発行して実行できます)。上記のコメントから判断すると、「/ usr / share / scripts / scriptName。 py args」、実行権限が必要です。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.