みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

Linuxシェルスクリプトを新しいコマンドにしたい

Linux初級者です。よろしくお願いします。
OSにFedora Core 10, シェルにtcshを使用しています。

よく使用するコマンドを、まとめて一括で実行するように、
新しいコマンドを作成したくて、次のようなことをしていたのですが

(1)ホームディレクトリにmybinというディレクトリを作成してPATHを通す。
(2)newbin1という以下の内容のシェルスクリプトを作成して、~/mybinに置いておく。
==================================
#!/bin/tcsh -f

date #実行コマンド例1
echo $PATH #実行コマンド例2
==================================
(3)chmodコマンドでファイルに実行権限を与える。


上記のような方法で、作成したシェルスクリプト(newbin1)を
PATHの通ったディレクトリ(~/mybin)に置いて、
> newbin1
とコマンドを呼び出しても、
"newbin1: コマンドが見つかりません"
というエラーになってしまいます。

> which newbin1
とすると、ちゃんとファイルのパスが表示されるのですが、

***********************************************************
自分で作成したシェルスクリプト(newbin1)を、
新しいコマンドとして認識させるにはどのようにすればよいのでしょうか。
また、そもそもシェルスクリプトを新しいコマンドにすることが
不可能だったりするんでしょうか?
************************************************************

一括で実行したいコマンドが多い場合に、aliasで割り当てるのが大変なので、
できればaliasコマンドは使わずにできる方法を探しています。
基本的な質問かもしれませんが、よろしくお願い致します。

投稿日時 - 2011-12-14 15:21:47

QNo.7189453

困ってます

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

~/mybin/newbin1
に実行権限のあるファイルをおいた直後(loginしなおさない)であれば
rehashコマンドを実行して、パスに通ったファイルを再学習させる必要があります。

なお、使っているシェルが、cshやtcsh系の場合はrehashが必要ですが、
bashの場合は不要です。

投稿日時 - 2011-12-14 16:03:15

お礼

ご回答ありがとうございました。
その上で大変申し訳ないのですが、原因が私のケアレスミスであったことがわかりました。

シェルスクリプト内の一行目
#!/bin/tcsh -f
とするところを
#!bin/tcsh -f
としており、
tcshコマンド自体が認識されていなかったことが原因でした。

大変ご迷惑おかけしまして申し訳ありませんでした。

投稿日時 - 2011-12-15 11:25:58

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)