解決済みの質問
まだプログラム初心者な上に、unix上でpythonを扱うことになりまして、わからないことができたので質問させてもらいます。
unix上でpythonを実行させるときは、普段
python スクリプト名.py でRETURNを押せばできるがこれをpythonを省略して、スクリプト名.pyだけで実行できるようにするにはどうせればいいか教えてください。
投稿日時 - 2009-11-24 11:00:54
>これ以上の省略はできないということなんですか?
普通は、自分の作ったコマンドは、自分のホームディレクトリの下に 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
投稿日時 - 2009-11-24 21:41:47
補足
すいません、初心者なのでつまらない質問させてもらいますが、.bash_profileって何ですか?
投稿日時 - 2009-11-25 08:49:16
0人が「このQ&Aが役に立った」と投票しています
ベストアンサー以外の回答(5件中 1~5件目)
> これ以上の省略はできないということなんですか?
UNIXでもWindows(DOS:ここで内部コマンドは例外とします)でもコンソールから命令を入力した場合、その名称の実行ファイル(プログラム)が存在しない場合、当たり前ですが実行できないので実行不可エラーとなります。
この実行ファイルを探す場所をシステムは「pathという名称の環境変数」に記述しています。setコマンドでpathの内容を見るとディレクトリのリストが特定の記号で区切られてセットされていると思います。
Windows(DOS)環境の場合は、カレントディレクトリ→pathの順に目的のファイルを探しますが、Unix系だとpathのみが検索対象となってしまいます。
よって、UNIX上では自前のコマンド(プログラム)を実行したいなら、パスをコマンドの前に付けるか、環境変数pathにそのファイルのある場所を明示的に登録しなければいけません。
投稿日時 - 2009-11-24 18:41:09
その「csv.py」というファイルですが、カレントディレクトリ上ということで直に「csv.py」と入力していませんか?
Windowsの場合は実行ファイルをカレント→パスの順で探してくれますがLinux系で探してくれるのはパス指定のもののみなので、カレントでどうにかしたいなら「./csv.py」とパス指定してやる必要があります。
投稿日時 - 2009-11-24 14:31:31
補足
そうなんですか。操作は自分のホームディレクトリにcsv.pyをおいてそこでしています。一応、./csvでは実行できました。ということは、これ以上の省略はできないということなんですか?
投稿日時 - 2009-11-24 14:55:09
スクリプト一般で使える方法ですが、スクリプトの先頭行に
#!/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)
参考URL:http://ja.wikipedia.org/wiki/%E3%82%B7%E3%83%90%E3%83%B3_(Unix)
投稿日時 - 2009-11-24 11:39:13
補足
pythonは/usr/bin/pythonにあるので
#!/usr/bin/pythonという
シェバング行は入れたんですが動かないんです。
パスについてもいまいちわかってないので調べてみます。
ちなみにこんな感じのエラーが出たんです。
-bash: csv.py: command not found
投稿日時 - 2009-11-24 14:07:16