• ベストアンサー

envと「cd」の同時実行ができない

[hoge@localhost ~]$ env TESTVAL=1 cd /home env: cd: そのようなファイルやディレクトリはありません 上記のエラーが発生します。 Envとcdは同時に実行できないのでしょうか?

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

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

env は外部コマンド(ユーティリティソフト)を実行します。 ディストリビューションによって必ずしもとはいえないと思いますが エラーを発生したディストリビューションではcdコマンドが外部 コマンドとして用意されていなかったのでしょう。 ※ 外部コマンドとして用意されていても普通には使われる事が ないでしょうし、使えても混乱するだけだと思います。 ========== -= 存在するFreeBSDで試してみると 1= %cd /tmp 2= %pwd 3= /tmp 4= %/usr/bin/cd /usr 5= %pwd 6= /tmp 7= % ======= 4のcd(外部コマンド)は、cdが実行されるプロセス(対話シェルの 子プロセス)のカレントディレクトリを/usrに変更するが、その cdコマンドが終了した時にその環境は破棄されるので対話シェル の環境は変わらない。cd コマンドがシェルの内部コマンドとして 実装されている理由はシェルから見て自身の内部で実行する事に よって自身の環境(カレントディレクトリ)を設定するため。 外部コマンドとして用意してもあまり意味はない。 ========== そんな場合には cd は sh系シェルやcsh系シェルの内部コマンド (builtinコマンド)なので外部コマンドとしては存在してません。 そのため、無理に使いたいなら次のような形式で行えば使える かも知れません。 % env TESTVAL=1 csh -c "cd /home ; ls" user1 user2 user3 ※ ls はcd が実行された事を確認するために追加してます 私の常用しているFreeBSDにはcdコマンドが外部コマンドとしても 用意されています。その内容はシェルスクリプトなのですが。 % file /usr/bin/cd /usr/bin/cd: Bourne shell script text executable % cat /usr/bin/cd #!/bin/sh # $FreeBSD: src/usr.bin/alias/generic.sh,v 1.1.16.1 2005/11/04 18:21:37 cperciva Exp $ # This file is in the public domain. builtin ${0##*/} ${1+"$@"}

その他の回答 (2)

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.3

うん? 何をしたいのか, ちょっと理解しかねます. 単純に cd してから環境変数を設定すればいいだけ?

  • koko_u_
  • ベストアンサー率18% (459/2509)
回答No.1

コマンドをセミコロン(;)で区切りましょう。

関連するQ&A

  • 複数コマンドを実行するには

    一回で完結しないコマンドはどのように書けば、実行できるのでしょうか? たとえば、下記のようにコマンドを実行して、受信メールを表示させたいのですが、方法が分かりません。 ------------------------- telnet localhost pop3 user hoge@hoge.com pass hoge retr 1 ------------------------- 一回で完結していないので、当たり前かもしれませんが、 下記のようにやっても、エラーがでてしまいます。 ------------------------- shell_exec('telnet localhost pop3'); shell_exec('user hoge@hoge.com'); shell_exec('pass hoge'); echo shell_exec('retr 1'); -------------------------

    • ベストアンサー
    • PHP
  • OpenOffice1.1 Upgradeの方法

    現在 RedHat9をインストールしてLinuxを勉強中です。 OpenOffice のバージョンが1.0.2と古いため最新の1.1のバージョンアップさせたいのですがマルチユーザーインストールがどうしてもできません。どのようすれば良いのでしょうか? 今までに行った方法は下記の通りです。 1)OOo_1.1.0_LinuxIntel_install_ja.tar.gz を ftp://ftp.sfc.wide.ad.jp/pub/OpenOffice/ より Down Load。 2)DownLoadした圧縮ファイル内の導入ガイドに書かれている下記例に従って実行したが Program Not Foundのエラー表示が実行できない。 【マニュアル記載の実行例】  解凍したディレクトリに移動して、 hoge@localhost:~$/install$ sudo ./setup -net と入力します。 sudoが使えない場合は、事前に hoge@localhost:~$ su - で、rootのパスワードを打ち込んでから hoge@localhost:~$/install$ ./setup -net とする方法もあります。 【私の疑問】 ・installに$を何故つけるのか? ・上記 sudo の意味は(引数のことですか?) 正しく行うためのヒントを頂けないでしょうか? 少し長くなってしまいましたがよろしくお願いいたします。

  • cronでPHP実行

    お世話になります。 OSはクライアントの為、恐縮ながら何を使用しているか不明となっております。 PHPバージョンは5.1.6です。 cronを使用して、毎日特定の時間に、メールを配信するPHPスクリプトを実行しようと試みているのですが、エラーメールが返ってきてしまいます。 因みに、URLを直接指定して実行した場合は正常にメールが配信されます。 設定方法は、crontab -e で 0 12 * * * /usr/lib/php -q /home/hoge/public_html/mail.php と記述しております。 返ってくるエラーメールの内容は、以下の通りです。 Content-Type: text/plain; charset=UTF-8 Auto-Submitted: auto-generated X-Cron-Env: <SHELL=/bin/sh> X-Cron-Env: <HOME=/home/hoge> X-Cron-Env: <PATH=/usr/bin:/bin> X-Cron-Env: <LOGNAME=hoge> X-Cron-Env: <USER=hoge> Message-Id: <xxxxxx@xxxxxxxxxx> Date: Sun, 28 Sep 2008 12:00:01 +0900 (JST) /bin/sh: /home/hoge/public_html/mail.php: Permission denied 以上、対策方法についてご存知の方がおられましたら、ご教授よろしくお願い致します。

  • tar.bz2ファイルのインストール方法

    centos6をインストールして一週間の初心者です。 http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1391243883 ここのページを見ながら、インストールを試みたのですが、 $ cd <展開したディレクトリ> $ ./configure $ make $ sudo make install という作業をやってみたのですが、 [dreamqest1970@localhost ~]$ cd /home/dreamqest1970/ダウンロード [dreamqest1970@localhost ダウンロード]$ ./configure bash: ./configure: そのようなファイルやディレクトリはありません [dreamqest1970@localhost ダウンロード]$ cd /firefox-25.0.1.tar.bz2 bash: cd: /firefox-25.0.1.tar.bz2: そのようなファイルやディレクトリはありません [dreamqest1970@localhost ダウンロード]$ というメッセージが出てきてインストールできません。 当方LINUX初心者ゆえ、初歩的な問題かもしれませんが、どうかよろしくお願いします。

  • シェルスクリプトファイルからjavaを実行したい

    シェルスクリプトファイル(拡張子が.shのファイル)からJavaを実行したいのですが上手くいきません。 コマンドラインで直接 cd javaのファイルが置いてあるディレクトリへのフルパス を実行した後 java 実行するクラス名 引数 とすると上手く動きます。 上記2行をshファイルにコピペしてみましたが、エラーになり動きません。 エラーは : No such file or directory cdをしている行とcdで移動しようとしているディレクトリパス Exception in thread "main" java.lang.NoClassDefFoundError: 実行するクラス shファイルの1行目に #!/bin/sh や #!/bin/bash を入れてみましたが、どちらも挙動が変わりません。(エラーのまま) shファイルはUTF-8を文字コードにして改行はLFのみです。 また、javaコマンドを実行するとき -cp や -classpath 引数でjavaのファイルが有るディレクトリを指定してみましたが挙動が変わりません。 shの実行はコマンドラインから sh shファイル(絶対パスで) source shファイル(絶対パスで) でやってみましたが駄目でした。 javaのファイルが有るディレクトリに対してパスを貼ってみましたが挙動が変わりません。 コマンドラインからコピペしてshファイルを作っていますので、フォルダ名等のつづりミスの可能性は低いと思います。 何か設定が足りないのでしょうか? よろしくお願いいたします。

  • コマンドでフアィルを見つけるとき・・・?

    kouzou@localhost ~]$ su パスワード: [root@localhost kouzou]# cd mysql bash: cd: mysql: そのようなファイルやディレクトリはありません [root@localhost kouzou]# find mysql find: ‘mysql’: そのようなファイルやディレクトリはありません [root@localhost kouzou]# cd / [root@localhost /]# find mysql find: ‘mysql’: そのようなファイルやディレクトリはありません [root@localhost /]# tree -mysql / > allfiles bash: tree: コマンドが見つかりませんでした... [root@localhost /]# find /mysql find: ‘/mysql’: そのようなファイルやディレクトリはありません [root@localhost /]# tree mysql bash: tree: コマンドが見つかりませんでした... 場所から「/」から検索すると200程、出てきました。 どうやったら、コマンドで見つけられますか? ご多忙中、大変恐れ入ります。 ご回答の程、宜しくお願い申し上げます。

  • PHPのSystem関数でcdしてもうまくできない

    PHPのSystem関数でcdしてもうまくできない PHPで特定フォルダを圧縮しようと以下のように書いてみました。 system("cd /var/www/html/hoge;zip -r hogehoge hoge.zip"); しかし上記だと何も実行されずapacheのエラーログを見ると cdでエラーとなり Not a directryとなります。 もちろん上記フォルダは存在しますし 上記コマンドをSSH上から実行すると正しく実行されます。 権限の問題かな?とも思ったのですが試しに以下のようにフルパスで書くときちんと実行できます。 (ただし圧縮ファイルに無駄な階層が入ってしまうので解決にはなっていないのですが) system("zip -r /var/www/html/hoge/hogehoge /var/www/html/hoge/hoge.zip"); 試しに以下のようにcdコマンドを売ってpwdできちんとcdできてるか試してみると system("cd /var/www/html/hoge;pwd"); →ダメ system("cd /var/www/html/;pwd"); →ダメ system("cd /var/www/;pwd"); →ダメ system("cd /var/;pwd"); →ダメ system("cd /;pwd"); →OK system("cd /tmp/"); →OK となります。 やっぱり権限関連のような気はするのですがなんでだろう? なお/var/www/html/以下はすべて所有権をapacheにしていますし hoge以下は777にしているので書き込み権限もあります。 なんでcdできないか解決方法の心当たりあったら教えてくください。 よろしくお願いします。 環境は以下の通りです。 CentOS 4.7 PHP 5.1.6

    • ベストアンサー
    • PHP
  • プロテクトライターCD-R「オリジナルCDから実行されていません」について

    プロテクトライターCD-Rの体験版をインストールして無事焼けたのですが、ファイルを開くと「オリジナルCDから実行されていません」というエラーが発生します。確かにオリジナルCDなのですが、何故このようなエラーメッセージが表示されるのでしょうか? ちなみにSD-Tools\CmpSetupのSetup.exeもインストールしています。 回答のほどよろしくお願い致します。

  • オセロゲームの実行

    オセロゲームの実行方法がわかりません。 http://www.radagast.se/othello/ で左のDownload LZebra 3.3からlz.tgzをダウンロード。 デスクトップに展開してマニュアルを見て取りあえず端末から入力。 guest@localhost:~> cd Desktop/lzebra guest@localhost:~/Desktop/lzebra> ./bookinst Installing opening book, please wait... Book decompression appears to already have been done. guest@localhost:~/Desktop/lzebra> ./lzebra ./lzebra: error while loading shared libraries: libpng.so.2: cannot open shared object file: No such file or directory guest@localhost:~/Desktop/lzebra> opensuseですがどうやって実行しますか?

  • php,flashファイルの設置、実行場所

    お世話になります。phpファイル実行の質問です。 phpが使用できるレンタルサーバーで、ルートディレクトリの下に任意にサブディレクトリを作成してそこにphpファイルを置いて ブラウザでURLを入力して、実行することはできるのですね。 また、flash,phpファイルを連携させる場合では両方のファイルを適当なサブディレクトリに置いてflashファイルをパブリッシュ したhtmlファイルを実行すればよいのですね。 その場合、flashに記述するURLですが(ルート直下のsabuディレクトリにtest.phpを設置する場合) http://localhost/test.phpでしょうか、それともhttp://localhost/sabu/test.phpでしょうか? パソコンの場合はhtdocsやwwwフォルダにphpやhtml,flashファイルを入れてブラウザでurlを記述して実行するのですね。 この場合パスを設定してどこのディレクトリに置いても実行することはできるのでしょうか? よろしくお願いいたします。