• ベストアンサー

envでsourceコマンド等シェルビルトインコマンドを実行する方法

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

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

  • ベストアンサー
回答No.2

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 や . で実行するスクリプト の中で変数設定を行う事も可能ですので少し考えてみてください。 ※ 必要な場面はなさそう(他に手段がありそう)に感じてます。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

  • notnot
  • ベストアンサー率47% (4856/10272)
回答No.3

mvは内部コマンドではありません。 具体的にどういったことをしたいのでしょうか?

全文を見る
すると、全ての回答が全文表示されます。
  • osamuy
  • ベストアンサー率42% (1231/2878)
回答No.1

a)bsh系で、環境変数代入を前置して、コマンドを実行する。 b)bsh/cshのオプション-cを使って、コマンドを実行する。 ――とか。詳しくは、shのmanをご覧ください。 内部コマンドってのが、シェルのbuiltinコマンドのことですが。

goovbs2
質問者

補足

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

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • LINUXのsourceコマンド実行

    perlスクリプト内でLINUXコマンドのsourceを実行する方法はないでしょうか? system()を試みたところ、組み込みコマンドだとエラーとなってしまいます。 sourceしたいファイルの内容を解読して$ENV{~~}に設定する方法もあるかと 思いますが、何か単純にできる方法があるのではと思っております。

    • ベストアンサー
    • Perl
  • コマンドプロンプトにてコマンド実行ができません

    コマンドプロンプトにて、コマンド(ipconfig)を 実行すると 'ipcongi'は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはパッチファイルとして認識されていません。 と表示されます。 正常に実行するにはどうしたらよろしいでしょうか?

  • コマンドプロンプトにてPowerShell実行

    Windows10のアップデート後にWindowsが起動できなくなり、青い画面の 「システムの復元」を実行しようとすると「このドライブでシステムの保護を 有効にする必要があります」となります。 色々ネットで調べて、コマンドプロンプトよりPowerShellにて有効にできる とのことだったのですが、実行すると「'PowerShell'は内部コマンドまたは 外部コマンド、操作可能なプログラムまたはバッチファイルとして認識 されていません」となります。 コマンドプロンプトの画面の左上には「管理者」となっています。 しかし、コマンドプロンプト画面になったときに「このコマンドを処理する にはメモリリソースが足りません」となりました。 なぜPowerShellが実行できないのでしょうか? 実行する方法をご教授下さい。 よろしくお願い致します。

  • スレッドないで外部コマンドの実行

    rubyでスレッドを作成して内部で外部コマンドを実行しました. するとコマンドが終了するまで止まってしまいます. ググってみたら ”WindowsのRubyでThread内でプロセス作成すると止まっちゃう”とあり http://ecpplus.net/weblog/windows_ruby_threa/ ソースまでありましたが,私の環境はlinuxなので実行できません. linux環境でこの問題を解消する方法はありますでしょうか? ご教授願います

    • ベストアンサー
    • Ruby
  • シェルの実行中にユーザ切り替えてコマンド実行

    はじめまして。 シェル初心者です。 shell.shをrootユーザでクーロン実行していますが、 shell.shの処理の中で、違うユーザでコマンド実行したいのですが、 可能かどうかも、方法が分かりません。 教えていただけないでしょうか。 環境はLinuxです。 下記のコマンドを実行したいです。 リモートでログインしてコマンド実行結果を取得する ssh -l tomcat server_tomcat grep test /tmp/test.log ※他のユーザでsshを実行してコマンド結果を取得したいです。 以上。宜しくお願い致します。

  • シェルコマンドの実行を行いたい

    シェルコマンドの実行は system("***.exe"); で行えますけど、system関数は実行したexeファイルが閉じられるまで処理がとまってしまいますよね? system関数を呼んだ後すぐに処理を返したい時はどうしたらいいのでしょうか。 また、2つ連続で実行ファイルを実行したいときにはどうしたらいいでしょうか。 system("1.exe"); system("2.exe"); これでは1.exeが終了しないと2.exeが起動しません。 バッチファイルでも同じ事になりますよね。 同時に起動したいのです。どうしたらいいのでしょうか、systemで躓いたので、 spawnで試してみました。 #include <process.h> #include <stdio.h> int main(){ spawn(P_NOWAIT,"notepad"); printf("notepadが起動しました。"); return 0; } こうすればnotepadを閉じなくてもprintf文が実行されると思ったのですが、コンパイルすると 未解決の_spawnが_main内で参照されました。 外部参照1が未解決です。 とでます・・。 どなたか解決策を教えてください>< OS:XPです。

  • フォートランソースから端末コマンドを実行する方法

    fortran のソースプログラムからOSのコマンドを起動する場合、以下の様にやるようです。 call system("dir") <-windowsでの例 これをソースプログラムに記入し、コンパイルして実行すると、この部分に処理が来たら、実行ファイルが置いてあるフォルダのファイル名が画面上に表示されます。 この場合、call system(" ")のコーテーションマーク内部はOSの端末からキーボード入力するコマンドは何でもOKなのでしょうか。限界はないのでしょうか。mkdirは利きましたが、cdは利きませんでした。実行中にいったんフォルダを変更することはできないのでしょうか。 また、call system() の中のコーテーションはシングル・ダブルのどちらが正しいでしょうか。どちらも動作するようではありますが。 よろしくお願いします。

  • vimの外部コマンド実行とalias

    よろしくお願いいたします。 cygwin上のzshで、version7.3のvimを使用しています。 vimの外部コマンド実行についてなんですが、 シェル上で alias lz='less ~/.zshrc' のようにaliasで設定したコマンドlzを使用しようとすると、"command not found"となってしまいます。 :!lz ---> command not found: lz aliasで設定したコマンドをvimから実行する方法はあるのでしょうか?

  • PHPからシェルコマンドの実行

    PHPからシェルコマンドを実行したいのですが SSHやSCPコマンドが使えません。 phpからlsなどは問題なく実行できます。 具体的には以下のように書いています。 `scp test.log user@host:/home/hoge`; shell_exec()を使っても実行されませんでした。 環境は以下のとおりです。 PHP 5.4.17 CentOS 5.8 sshやscpコマンドをphpから実行するには何か特別な方法が必要なのでしょうか。 ご存知の方、教えてください。

    • ベストアンサー
    • PHP
  • コマンドプロンプトから実行したいです

    質問させてください。PC初心者です。 http://www.area61.com/mpeg2.htmlのページを参考にして、 「GPL MPEG-2 Decoder」をインストールしようとしています。 デスクトップにMSIファイルをダウンロードしたのですが、 WindowsVistaを使用しているため、コマンドプロンプトから それを実行しなければいけないそうです。 そして、上記のページに書いてある通り実行したのですが、 「'MpegDecoder012.msi'は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチファイルとして認識されていません」 というメッセージが出て実行できません。 それから少し調べまして、どうやらPATHを指定して実行すると 出来るかも知れないことはわかったのですが、 それによってOS自体が動かなくなることもあるとのことで、 躊躇しています。 宜しければ、実行方法を初心者の私にも分かるように、 詳しく説明してくださると嬉しいです。 ご迷惑をお掛けして申し訳ありませんが、 どうか宜しくお願いいたします。 ※ちなみに以前にも同様の質問がされていたのですが、 良い回答は得られていないようです。 http://okwave.jp/qa4189669.html

振った相手に嫌われた
このQ&Aのポイント
  • 同級生からの告白に揺れる中、諦めきれずに先輩と付き合ったが、同級生との関係がこじれてしまった。
  • 同級生との関係が気まずくなり、昨日LINEで仲良くしたいと伝えたが、冷たく断られた。
  • 自分でもなぜ同級生と話したいのか分からないが、気まずさを解消したいが、引き離されてもう無理かもしれない。
回答を見る