- ベストアンサー
プログラム初心者です。unix上でのpythonについて
まだプログラム初心者な上に、unix上でpythonを扱うことになりまして、わからないことができたので質問させてもらいます。 unix上でpythonを実行させるときは、普段 python スクリプト名.py でRETURNを押せばできるがこれをpythonを省略して、スクリプト名.pyだけで実行できるようにするにはどうせればいいか教えてください。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
>これ以上の省略はできないということなんですか? 普通は、自分の作ったコマンドは、自分のホームディレクトリの下に bin という名前のディレクトリを作って、そこに格納します。 おそらく、$PATH に $HOME/bin が含まれていると思いますので、 cd ~ mkdir bin mv csv.py bin で、 csv.py で実行できます。Windowsと違って、実行ファイルの拡張子に意味はないので、なくてもかまいません。つまり、csv.py を csv にリネームすれば、 csv で実行できます。 もし、上記でだめなら、$PATH に $HOME/bin が含まれていないので、.bash_profile に、下記を追加してください。 PATH=$PATH:$HOME/bin
その他の回答 (5)
- ralf124c
- ベストアンサー率52% (232/446)
またも多重投稿すいません。 あと、自分の作った実行ファイルを、すでにPATHが通っている場所にコピーするという手もありますが、共用していないUNIXマシン以外ではおすすめできません。
- ralf124c
- ベストアンサー率52% (232/446)
> これ以上の省略はできないということなんですか? UNIXでもWindows(DOS:ここで内部コマンドは例外とします)でもコンソールから命令を入力した場合、その名称の実行ファイル(プログラム)が存在しない場合、当たり前ですが実行できないので実行不可エラーとなります。 この実行ファイルを探す場所をシステムは「pathという名称の環境変数」に記述しています。setコマンドでpathの内容を見るとディレクトリのリストが特定の記号で区切られてセットされていると思います。 Windows(DOS)環境の場合は、カレントディレクトリ→pathの順に目的のファイルを探しますが、Unix系だとpathのみが検索対象となってしまいます。 よって、UNIX上では自前のコマンド(プログラム)を実行したいなら、パスをコマンドの前に付けるか、環境変数pathにそのファイルのある場所を明示的に登録しなければいけません。
- ralf124c
- ベストアンサー率52% (232/446)
多重回答申し訳ありません。 パーミッションの実行権限も忘れないようにしてください。
- ralf124c
- ベストアンサー率52% (232/446)
その「csv.py」というファイルですが、カレントディレクトリ上ということで直に「csv.py」と入力していませんか? Windowsの場合は実行ファイルをカレント→パスの順で探してくれますがLinux系で探してくれるのはパス指定のもののみなので、カレントでどうにかしたいなら「./csv.py」とパス指定してやる必要があります。
補足
そうなんですか。操作は自分のホームディレクトリにcsv.pyをおいてそこでしています。一応、./csvでは実行できました。ということは、これ以上の省略はできないということなんですか?
- rinkun
- ベストアンサー率44% (706/1571)
スクリプト一般で使える方法ですが、スクリプトの先頭行に #!/usr/bin/python と書けば、Pythonのパスが/usr/bin/pythonであれば実行できるかと。 あるいは #!/usr/bin/env python と書けば、pythonにパスが通っていれば実行できるかと思います。 # 参考 http://ja.wikipedia.org/wiki/%E3%82%B7%E3%83%90%E3%83%B3_(Unix)
補足
pythonは/usr/bin/pythonにあるので #!/usr/bin/pythonという シェバング行は入れたんですが動かないんです。 パスについてもいまいちわかってないので調べてみます。 ちなみにこんな感じのエラーが出たんです。 -bash: csv.py: command not found
補足
すいません、初心者なのでつまらない質問させてもらいますが、.bash_profileって何ですか?