• 締切済み

tcshなのにスクリプト構文中のsetenvが動かない。

シェルスクリプトを勉強しております。 testと名付けたファイルに スクリプトの構文の頭に#!/bin/tcshを記入せず setenv(csh系だけで動くコマンド)のみを記載して 実行権を与えて ./test と打つと etenv: command not found になってしまいます。 ここで、やりたいことは文頭にシェルを指定せずに 実行をすると、現在のtcsh上で実行されるはずなのに setenv: command not found になってしまうところに疑問がございます。 ログインシェルをtcshに変えたりも試してみても 疑問が解決しないので、なにかアドバイス等でもいただけないでしょうか。よろしくお願い致します。

みんなの回答

  • a-saitoh
  • ベストアンサー率30% (524/1722)
回答No.3

その参考書の書名と出版社をよければ教えて貰えませんか。 シェルスクリプトをどのシェルで実行するかは、ここ30年間くらいでいろいろと変遷してきています。過去にはいろいろな方式がありましたが、、。 対話シェルは各人が趣味で選んで良いのですが、シェルスクリプトは/bin/sh(あるいはその上位互換のbash)で書くのが常識です。そのため、にシェルを指定しているのでなければ、/bin/shが使われます。

hiro_nx
質問者

補足

書名> わかる&使えるUNIX基礎講座 (シェルスクリプト編) 出版社> 技術評論社 P25の第1の方法の欄にデフォルトシェルが起動すると記述されておりました。 ただし、この本ではデフォルトのシェル=ログインシェルとは記述されてはおりません。

回答No.2

取りあえずbash系でも環境変数の設定は出来ますけど? cshの場合 setenv TEST 01 bashの場合 TEST=01; export TEST http://x68000.q-e-d.net/~68user/unix/environment.html と言うことなんですが、、お呼びじゃなかったですか、そうですか

  • a-saitoh
  • ベストアンサー率30% (524/1722)
回答No.1

「文頭にシェルを指定せずに 実行をすると、現在のtcsh上で実行されるはず」 というのはどこから仕入れた情報ですか? 先頭に#!がなければ、/bi/shが動くはずですが。

hiro_nx
質問者

お礼

>「文頭にシェルを指定せずに >実行をすると、現在のtcsh上で実行されるはず」 これについては、デフォルトのシェルで実行されると シェルスクリプトの参考書に書いてあったのですが デフォルトシェルについての詳細が書いてなかったので ググッて見たらデフォルトシェル=ログインシェルになると調べた結果です。 回答ありがとうございました。

関連するQ&A