
Ubuntu日本語フォーラム

ログインしていません。
シェル起動中に他のシェルに一時的にコマンドの実行をさせる場合、
#/bin/sh -c command
と実行すれば実行できますよね?
しかし、コマンドは認識するものの、オプションを指定できなかったり、ファイル名の指定をできないなど、
4つ目のパラメータを引数として受け取ってくれません。
何か良い解決方法はありませんでしょうか?
オフライン
sudo sh -c "ls -lah /home/ikuya"
みたいに、ダブルクォーテーションでくくればいいということでしょうか。
#間違っていたらごめんなさい
オフライン
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)
オフライン
koisanの言う通り、一時的にshell自体を切り替える方が確かに楽なのですが(><)
ちょっと理由あって、あくまでも
#/bin/sh -c command
の形での実行でなければいけなかったんです。
ikuyaさんの仰る通り、
#/bin/sh -c "ls -l"
ダブルコーテーションでくくったら無事実行することができました!☆
お二人共ありがとうございます!
また、質問させてもらうことがあると思うので、よろしくお願いします!^^
オフライン