「command not found」エラーが発生する原因と解決方法

このQ&Aのポイント
  • シェルスクリプトを実行した際に「command not found」というエラーメッセージが表示される問題が発生しています。シェルスクリプト内で実行しているコマンドが見つからないためにエラーが発生している可能性があります。具体的な原因はシェルスクリプト内で使用しているコマンドが正しくインストールされていなかったり、パスが通っていないことが考えられます。解決するためには、シェルスクリプト内で使用しているコマンドが正しくインストールされているかを確認し、パスが通っていることを確認する必要があります。
  • また、別の原因としては、シェルスクリプト内のSQLファイルのパスが正しく指定されていないことも考えられます。SQLファイルのパスは正確に指定する必要がありますので、シェルスクリプトとSQLファイルのディレクトリ構造を確認して、正しいパスを指定してください。
  • さらに、PostgreSQLを使用している場合、実行するSQLコマンドの前に接続情報を指定する必要があります。例えば、「psql -f B.sql -U ユーザ名 サーバ名」というコマンドを実行する際に、ユーザ名とサーバ名を正確に指定する必要があります。接続情報を正しく指定しているかを確認してください。
回答を見る
  • ベストアンサー

「command not found」メッセージが出てしまいます。

下記シェル(A.sh)をコマンド実行すると、SQLの内容は正しく実行されるのですが、画面上に「command not found」というエラーメッセージが出ます。 DBはPostgresSQLで、SHファイルもSQLファイルも同じディレクトリ配下において、SHファイルには実行権限を与えています。 -----A.sh-------------------------- #!/bin/bash #SQL発行 psql -f B.sql -U ユーザ名 サーバ名 ----------------------------------- -----B.sql------------------------- select * from TBL名; begin; insert into TBL名 values(); commit; select * from TBL名 ----------------------------------- どなたか原因を教えていただけないでしょうか? よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • xcrOSgS2wY
  • ベストアンサー率50% (1006/1985)
回答No.1

A.shの #!/bin/bash という行を #!/bin/bash -x と変えれば、実行中のスクリプトの各行の内容が逐次表示されるので、どの行の実行時に「command not found」が出力されているのか分かります。

yumi1980
質問者

お礼

回答ありがとうございます。 教えていただいたとおりに実行したところ、エラーに なっている箇所が分かりました。

関連するQ&A

  • シェルからpsqlコマンドでトランザクション

    標題についてご教授下さい。 シェル内でpsqlコマンドから オプション c にて BEGIN ↓ DELETE ↓ COPY xxx FROM xxx.sql ↓ COMMIT の流れでシェルコマンドを実行したいのですが、 いい方法ありますでしょうか。 もちろんエラーハンドリングもしたいです。 COMMIT前に エラーがあったらROLLBACK したいです。 シェルだと難しいのでしょうか。

  • NOT EXITSを用いたデータ抽出

    以下の様のテーブル内容でb_tblにないa_tblのデータを抽出するにはNOT EXITSを使用したSQLはどの様に記述すればよいでしょうか。尚、NOT INでは以下の様な記載になりますが、これを単純にNOT EXITSに置き換えると同様の結果が得られません。 select distinct a from a_tbl where a not in (select a from b_tbl); a_tblの内容 項目a 10001 10001 11001 12002 13003 13003 13003 14004 14004 15005 15005 16006 16006 16006 17007 18008 18008 18008 b_tblの内容 項目a 10001 11001 13003 15005 17007 結果 12002 14004 16006 18008

  • (Linux、データベース初心者)スクリプトを実行するとPermiss

    (Linux、データベース初心者)スクリプトを実行するとPermission deniedが発生します。 Postgresql psqlに関して よろしくお願いします。 UbuntuサーバにインストールしたPostgresqlに対し、スクリプトを実行してcsvファイルをインポートしようと考えています。 その際にPermission deniedが発生しテーブルにデータが入りません。 以下にスクリプトファイルとエラーメッセージを掲載します。 <test.sh> #!/bin/bash #接続文字列 export PGHOST="ホスト名” export PGPORT="ポート番号" export PGDATABASE="データベース名" export PGUSER="ユーザー名" export PGPASSWORD="パスワード" PSQL='COPY bat_test FROM ' '''/test/test.csv''' ' with DELIMITER ' ''',''' echo "$PSQL" | psql echo "commit" | psql <以上、test.sh> <エラーメッセージ> test.sh:/test/test.csv:Permission denide <以上、エラーメッセージ> インポートしたいファイルの権限等は確認しましたがわかりませんでした。 何が悪いのかご指摘いただければ助かります。 どうか、よろしくお願いします。

  • イコールとノットイコール条件による件数結果

    以下3つのSQLを実行した場合に検算が 合わないのですがどのように解釈して いいのでしょうか。 (1)の件数+(2)の件数 = (3)の件数になると 考えては駄目ですか? (1) select count(A.*) from tbl_a A,tbl_b B where A.komoku1 = B.komoku1 and A.komoku2 = B.komoku2 and A.komoku3 = B.komoku3 (2) select count(A.*) from tbl_a A,tbl_b B where A.komoku1 = B.komoku1 and A.komoku2 = B.komoku2 and A.komoku3 <> B.komoku3 (3) select count(A.*) from tbl_a A,tbl_b B where A.komoku1 = B.komoku1 and A.komoku2 = B.komoku2

  • マテリアライズド・ビューの再計算について

    こんにちは ORACLE のマテビューについて困っています。 マテビューを作成して元となるテーブルを削除し再び作成してデーターを投入した後 マテビューを参照するとテーブルを削除する前の情報が表示されてリフレッシュされません どのようにしたら再作成後に投入したデーターをマテビューで表示させる事ができますでしょうか 【検証】 ◆テーブルの作成 CREATE TABLE TEST_TBL (A CHAR(2), B CHAR(5)); ◆レコードを追加 INSERT INTO TEST_TBL VALUES('01','AAA'); INSERT INTO TEST_TBL VALUES('02','BBB'); INSERT INTO TEST_TBL VALUES('03','CCC'); COMMIT; ◆マテビューの作成 CREATE MATERIALIZED VIEW MV_TEST_TBL REFRESH COMPLETE ON COMMIT AS SELECT * FROM TEST_TBL; ◆マテビューの確認 #1 SELECT * FROM MV_TEST_TBL; 3件表示される (正常) ◆レコードの追加 INSERT INTO TEST_TBL VALUES('04','DDD'); COMMIT; ◆マテビューの確認 #2 SELECT * FROM MV_TEST_TBL; 4件表示される (正常) ◆テーブルの削除 DROP TABLE TEST_TBL CASCADE CONSTRAINTS; ◆テーブルの作成 CREATE TABLE TEST_TBL (A CHAR(2), B CHAR(5)); ◆マテビューの確認 #3 SELECT * FROM MV_TEST_TBL; 4件表示される (期待としては 0件であったが) ※疑問1 テーブルのDROP & CREATE は再計算のトリガーに           ならないのか? ◆レコードの追加 INSERT INTO TEST_TBL VALUES('05','DDD'); COMMIT; ◆マテビューの確認 #4 SELECT * FROM MV_TEST_TBL; 4件表示される  ※期待としては1件だけが表示されてほしかったが 使い方としてはマテビューではなくても普通のビューでもいいのでは と思われるかもしれませんが、元となるテーブルのDROP & CREATE が システム的に発生しますがその際にビューの再作成をしたくないので マテビューを選択しました。

  • sqlplusの処理が途中でとまる

    oracle10gを使用しています。 sqlplusでいくつかのDDLとDMLを一度にコピーペーストで流しました。一つ一つの処理後にcommit;も入っています。 しかし、最後のDMLで処理がとまってしまい、エラーもでません。内容は以下のようになっています。 insert into tbl_a (select distinct col1,'2006/01/01' from tbl_b where col1 is not null union select distinct col2,'2006/01/01' from tbl_b where col2 is not null union select distinct col3,'2006/01/01' from tbl_b where col3 is not null union select distinct col4,'2006/01/01' from tbl_b where col4 is not null union select distinct col5,'2006/01/01' from tbl_b where col5 is not null union select distinct col6,'2006/01/01' from tbl_b where col6 is not null); COMMIT; この処理を単独で実行すると、成功します。sqlpulsは、実行コマンドの量に制限などあるのでしょうか?なぜ、このようになるかわかりません。ちなみに、コマンドの全文字数は3990目で、処理が停止するのは、3648文字目です。この3648文字目にあたるのが、上記の >select distinct col3,'2006/01/01' の >select disti です。 大変急を要ししています。 よろしくお願いします。

  • ????

    以下のクエリを実行しました。 insert into test_tbl(aaa,bbb,ccc) values('xx','yy','△△'); ※====『△』は半角スペース==== それで以下のsqlを実行すると select count(*) from test_tbl where ccc = '△△'; --- 1 --- と出ます。それで今度は以下のSQLを記述すると select count(*) from test_tbl where ccc = '△'; --- 1 --- とでます。 因みにテーブル構成は -------------- aaa char(2) bbb char(2) ccc char(2) -------------- です。 どうしてインサートしたデータが"△△"なのに "△"でひっかかるのでしょうか? しつこいようですが、記述中の'△'は半角スペースです。

  • SQL サブクエリで抽出したカラムについて

    サブクエリで抽出したカラムを 本クエリでの結果と一緒に表示したいのですが どのように実現してよいかわからず困っております。 詳細としては、下記のようなことをしたいと考えております。 文中の1)と2)は文章下部にあるSQLを指しております ----------------------------------------------------------- 最初は、1)のように凄く単純なSQLでよかったのですが 仕様が変わり、TBL2で取得した新しいカラムも一緒に 本クエリでの結果として取得できれば、SQLを2回実行せずに済むなと考えたのですが、 2)のように色々と試行錯誤したのですが、実現できません。 (2)は単なる空想ですが…) そこで、わかる方にお伺いしたいのですが、 副問い合わせで取得した複数カラムの中の1つのカラム【2)でいうところのTBL2.X】 を 2)のように"select TBL1.A , TBL2.X"として、結果を得ることは可能でしょうか。 ただし、 TBL1のカラムAは、TBL2に存在しない TBL2のカラムXは、TBL1には存在しない カラムBは、TBL1、TBL2に存在する の条件となっております 環境はMysqlです テーブル結合の方法も考えたのですが、 TBL2で、日付でソートし、その上位100件だけを 持ってきたいと思ったので、副問い合わせで一気に抽出しようとこの方法を考えまし た お分かりになる方がいらっしゃいましたらよろしくお願いします 1)SQL ------------ select TBL1.A from TBL1 where TBL1.B in ( select TBL2.B from TBL2 where 条件 ) 2)想像SQL(こんな感じの事をしたい) -------------- select TBL1.A , TBL2.X from TBL1 where TBL1.B in ( select TBL2.B , TBL2.X from TBL2 where 条件 order by TBL2.日付 desc limit 100 )

    • ベストアンサー
    • MySQL
  • ACCESSのSQLの書き方

    ACCESSでのSQL文の書き方を教えてください。 テーブルtbl_Aとテーブルtbl_Bがあり, tbl_Aで得られた数値とtbl_Bで得られた数値を加えたものを結果として表示します。 どう書けばよろしいのでしょうか。どうしてもエラーになってしまいます。 イメージとしてはこんな感じです。 select (select ~~ from tbl_A where ~~)+(select ~~ from tbl_B where ~~) (もしoracleならば,「from dual」というのを最後に付けるんですが。)

  • shからPL/SQLブロックを実行する方法

    Solaris上でshスクリプト中からPL/SQLを記述したファイルを呼び出して、Oracleのテーブルに対して操作したいのですが、 test.shファイル #/bin/sh sqlplus userid/password@ddzk test.sqlファイル DECLARE … BEGIN INSERT INTO table VALUES( …  ) END; / コマンドラインから $./test.sh を実行すると、 ./test.sh: sqlplus: 見つかりません。 と表示されます。 どなたかshスクリプトからPL/SQLで記述したファイルを実行する 方法をご存知の方、ご教示願います。

専門家に質問してみよう