質問: プログラミング初心者です。 プログラミング初心者です。 macを使用しています。 perlでプログラムを実行する際に、 % perl ファイル名 とせずに % ファイル名 とする方法としてファイルの一番先頭に % #! perlのフルパス を入れると本に書いてあります。その際、実行する前に % chmod a+x ファイル名 で実行権限を与える、とありました。 実際にやってみると -bash: ファイル名: command not found となってしまいます。 そこでperlのフルパスが間違いなのかとperlのヴァージョンを調べる方法 % perlのフルパス -v を実行するとちゃんとヴァージョン名が出ます。 あとは検索パスがファイルを格納しているフォルダに通っていないからだと思うのです。@incに検索パスをあらかじめ加えるには % setenv perl5lib 加えたいパス で出来るようですが、ターミナルで実行しても can't open perl script "setenv": no such file or directory となってしまいます。 これはどのように実行するのが正しいのでしょうか? 基本的な知識が乏しくてすみませんがお願いします。
回答: これは、perlというより、unix系osと、それのシェルの問題です。 > -bash: ファイル名: command not found unix系osの標準的なシェルでは、 コマンド名に ディレクトリの区切り(/)が有る場合 →ファイル名と解釈して、そのファイルを実行しようと試みる 無い場合 →実行シェルの内部コマンド→環境変数pathに設定された各ディレクトリにあるファイルの順で探す となります。ここで注意しないといけないのが、無い場合の実行候補の中に「カレントディレクトリから探す」というのが無い、ということです。 (windowsやms-dos 等と違って)pathに . を明示しないかぎり、カレントディレクトリからは実行ファイルを探しません。 方法は2つあります。 1)「 ./ファイル名 」のように、カレントディレクトリであることを明示する 2) pathに . を追加する(ただし、こちらの方法は非推奨です) > @incに検索パスをあらかじめ加えるには > % setenv perl5lib 加えたいパス > で出来るようですが、ターミナルで実行しても > can't open perl script "setenv": no such file or directory > となってしまいます。 どんなものを実行しました? エラー表示と上にある実行コマンドとの間に違いがあるのですが。 perl setenv perl5lib ... とかやったんじゃないですか? 環境変数をシェルで設定するには、それぞれのシェルで方法が違います。 ・bash等のb-sh系 perl5lib=~(=の前後に空白を入れないこと) export perl5lib ・tcsh等のcsh系 setenv perl5lib ~ ただ、この環境変数は、perlのスクリプトで use [モジュール] とした時等に、そのモジュールを探すパスを設定するものなので、bashのcommand not foundとは無関係です。