お知らせ

  • 利用規約を守って投稿してください。また、よくある質問および投稿の手引きも参照してください。
  • メッセージの投稿にはアカウントが必要です。未登録の方は、ユーザ登録ページからアカウントを作成することができます。

#1 2007-12-15 17:49:36

tonpa
新しいメンバ
登録日: 2007-11-30

他のシェルでのコマンド実行

シェル起動中に他のシェルに一時的にコマンドの実行をさせる場合、

#/bin/sh -c command
と実行すれば実行できますよね?
しかし、コマンドは認識するものの、オプションを指定できなかったり、ファイル名の指定をできないなど、
4つ目のパラメータを引数として受け取ってくれません。

何か良い解決方法はありませんでしょうか?

オフライン

 

#2 2007-12-15 18:17:56

ikuya
モデレータ
From: Osaka
登録日: 2006-10-20

Re: 他のシェルでのコマンド実行

sudo sh -c "ls -lah /home/ikuya"
みたいに、ダブルクォーテーションでくくればいいということでしょうか。

#間違っていたらごめんなさい

オフライン

 

#3 2007-12-15 23:58:32

koisan1949
メンバ
From: Hyogo, Japan
登録日: 2007-11-11

Re: 他のシェルでのコマンド実行

 tonpa さん

 Linuxのコマンドで、一時的に変更する方法が楽かなと思います。間違っていたらごめんなさい。
 ただ、例とされたsh(Boume)はUbuntu Linuxで標準としているBashの旧版に相当します。
 cshの発展したtcshと勘違いされているのかな。
 1) 一時的に変更

コード:

 ~$ echo $SHELL
 ~$ exec tcsh
 ~% シェルの実行

  復帰はこの逆のコマンド入力です。
 2) ログインシェルの変更

コード:

 ~$ which tcsh
 ~$ chsh
   passwordを聞いてきます
   CRキーだとディフォルトのシェル
   他のシェルならその場所を指定
   ext. (/bin/tcsh)
 ~% シェルの実行
 ~% chsh
 ~$ exit 

   元に復帰するときは、同様に行う。
 3) /etc/passwd ファイルを変更、これは2)と同じ
   Vi 等のeditor で編集してください。
   root: .....    .....:/bin/bash  => /bin/tcsh
   user1: .....    .....:/home/user1:/bin/bash => /bin/tcsh
   user2 も同様

 注意: chsh コマンドで試しに、変更し復帰させましたところ、user1のtcshが復元
     しませんでした。しかたがなく、Vi で戻しました。

     
   

最後の編集者: koisan1949 (2007-12-16 14:24:25)

オフライン

 

#4 2007-12-17 17:44:32

tonpa
新しいメンバ
登録日: 2007-11-30

Re: 他のシェルでのコマンド実行

koisanの言う通り、一時的にshell自体を切り替える方が確かに楽なのですが(><)
ちょっと理由あって、あくまでも
#/bin/sh -c command
の形での実行でなければいけなかったんです。

ikuyaさんの仰る通り、
#/bin/sh -c "ls -l"
ダブルコーテーションでくくったら無事実行することができました!☆

お二人共ありがとうございます!
また、質問させてもらうことがあると思うので、よろしくお願いします!^^

オフライン

 

Board footer

Powered by FluxBB