アプリ版:「スタンプのみでお礼する」機能のリリースについて

envで外部コマンド(例less)の実行はできますが、内部コマンド(mv等)の実行ができません。これを行う方法はありますでしょうか?

A 回答 (3件)

builtin の man(オンラインマニュアル)を見ると内部コマンド(Shell組込み


コマンド[builtinコマンド])の一覧がでていると思います。
例えば、 if コマンドは sh では組込みコマンドですが csh では外部
コマンドですし、sourceコマンドは cshの組込みコマンドですが sh では
使えません。

sourceはcshの組込みコマンドですがlessもmvも外部コマンドです。
※ mvが内部コマンドだと思われたのは何故かな。

csh(sourceコマンドについて書かれているので対話シェルとして
csh系のシェルをご利用なさっていると思いました)環境でしたら
which コマンドを使って確認できますよ。
% which source
% which mv
% which less
※ 外部コマンドの場合にはファイル名が、内部コマンドの場合には
内部コマンドだと報告するメッセージが表示されると思います。

で、env 自体が外部コマンドですので通常 env からビルトインコマンドを
実行する必要はありません。(envコマンドを実行した時点で起動したShell
とは別の環境が起動されてしまっておりその中で動いているので起動した
Shellへ戻った時点では破棄されてしまっている操作となります)

csh系のsourceコマンドやsh 系の . コマンド、{}によるグルーピング
など新たな環境(サブシェル)の起動を抑止し実行する機能は実行中の
Shellの環境を操作したい場合などに使うのだと思いますがenv コマ
ンド(外部コマンド)を起動した時点で意味をなしません。

env で一時的に変数を設定せずとも source や . で実行するスクリプト
の中で変数設定を行う事も可能ですので少し考えてみてください。
※ 必要な場面はなさそう(他に手段がありそう)に感じてます。
    • good
    • 0

mvは内部コマンドではありません。


具体的にどういったことをしたいのでしょうか?
    • good
    • 0

a)bsh系で、環境変数代入を前置して、コマンドを実行する。


b)bsh/cshのオプション-cを使って、コマンドを実行する。
――とか。詳しくは、shのmanをご覧ください。

内部コマンドってのが、シェルのbuiltinコマンドのことですが。

この回答への補足

もう少し具体的に書いた形で再投稿してみます。

補足日時:2008/10/26 23:03
    • good
    • 0

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