限定しりとり

プログラム経験0の素人初心者ですが技術者向けの方が詳しい方がいらっしゃるかとこちらに書き込みしました。
perlを覚えようと本を買ってきましたが初めからつまづいてしまいました。

環境
 winXP HomeEdition sp1
使用ソフト
 cygwin
 Poderosa(ターミナルエミュレーター)
ホームディレクトリの設定と位置
 設定「/cygdrive/c/myfolder」
 位置「C:\myfolder」


本に書いてあったとおりに、以下のようにファイルを作り、myfolderに保存しました。
ファイル名:calc
中身:以下の通り
#!usr/local/bin/perl
print("2*3=");
print(2*3);
print("\n");

Poderosaでcygwinを起動し、
perl calcと打つと
2*3=6と返してくれるのですが、

chmod a+x calc

calc
と打つとウィンドウズ付属の電卓が起動してしまいます。
ファイル名をtest、中身をprint("test");
等にした場合には、command not found となってしまいます。


検索パスの設定をしてない為かもしれませんが、検索パスの指定の仕方がわからず困っています。
システムの環境変数のPathの所でどう指定すればいいのでしょう。
どうぞアドバイス宜しくお願いします。

A 回答 (2件)

補足すべき事が2点。



1.スクリプトファイルの内容

>#!usr/local/bin/perl

#!/usr/local/bin/perl

として下さい。
ルートからの絶対パスでないと、セキュリティ上危険であり、
正しく動いたり/動かなかったり、動作が不定になるので。

2.”./calc”での確認は..

コマンドに、"./"をつけるとコマンドサーチは、検索パスを使わず、
相対ディレクトリと認識して、自ディレクトリで探します。
(この場合、カレントディレクトリで、calcを探す)

>windows側の環境変数も教えて頂いたサイトを参考にやってみましたが、それでも./calc と打つと
>: bad interpreter: No such file or directory
>となってしまいます。

考えるされるのは、
(1) calcコマンド(スクリプト)が見つからない
(2) perlが相対パスによる呼び出しのため、perlが見つからない
という理由でエラーになってませんか?

#!の記述を見直し、./calcを確認してください。
    • good
    • 0
この回答へのお礼

再度レス頂いていたのに気づきませんでした、お礼が遅くなりまして本当にごめんなさい!

>#!usr/local/bin/perl
はこちらでの書き込みで記述ミスしていただけで、実際のプログラムの方では
ちゃんと#!/usr/local/bin/perlで記述していました、ご指摘有難うございます。

>(1) calcコマンド(スクリプト)が見つからない
>(2) perlが相対パスによる呼び出しのため、perlが見つからない
>という理由でエラーになってませんか?

#!の記述が合っていましたので、どうして起動しないか分かりませんが、
相変わらず「perl プログラム名」と打てば、その後打ったどのプログラムも
正常に動作していますので、そのまま使っています。
丁寧なご返答頂き有難うございました。

お礼日時:2005/07/22 16:36

試しに、perlスクリプトを次の書き方で起動してみて下さい。



スクリプトをカレントディレクトリに置いた状態で..
./calc
./test

それで予定のスクリプトが実行されるなら、Windows側の
環境変数は関係なくて、cygwin側のシェルでのパス設定の
問題です。

参考URLに示したページの中程にある「環境設定(Cygwin内部)」の
部分を参照して下さい。
PATH=でシェルのコマンド検索パスを記述していますが、cygwinの
シェルは、これに従って起動すべきモノを探すはずです。

参考URL:http://www.mars.dti.ne.jp/~sohda/cygwin/setenv.h …
    • good
    • 0
この回答へのお礼

cygwinの方は、Poderosa(ターミナルエミュレーター)が勝手に設定してくれるようで、bashrcというファイルや.bash_profileというファイルがあり、.bash_profileの中で

# Set PATH so it includes user's private bin if it exists
# if [ -d "${HOME}/bin" ] ; then
# PATH=${HOME}/bin:${PATH}
# fi

# Set MANPATH so it includes users' private man if it exists
# if [ -d "${HOME}/man" ]; then
# MANPATH=${HOME}/man:${MANPATH}
# fi

# Set INFOPATH so it includes users' private info if it exists
# if [ -d "${HOME}/info" ]; then
# INFOPATH=${HOME}/info:${INFOPATH}
# fi

のように設定されていて、これに何か追加したり、これ自体を変更しようとすると動作不良を起こしてしまいます。.bashrcファイルの方も同様です。

windows側の環境変数も教えて頂いたサイトを参考にやってみましたが、それでも./calc と打つと
: bad interpreter: No such file or directory
となってしまいます。

もう少し色々やってみます、有難うございました。

お礼日時:2005/07/10 20:00

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!