• ベストアンサー

UNIX:シェルをshからkshへ替えられない

下記の方法で、shからkshへ切り替えるという設問ですが、shのままkshになりません。 1)echoコマンドで、export ENV=$HOME/Env/ksh_envを.profileへ追加 2)Envディレクトリ作成後、ksh_envへ下記を追加   Set –o noclobber, set-o ignoreeof, set –o vi 3) chmodコマンドで、ksh_envを777変更 4)echoコマンドで、$SHELL=/bin/ksh 5) echoコマンドで、$SHELLを呼ぶと、kshになっている。 何を間違えているか教えて頂けますか? 宜しくお願いします。

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

  • ベストアンサー
  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.1

ログインシェルを変えたい、という話なら「 man chsh 」 単にkshを実行したいだけなら、通常通り kshを実行。 どちらにしても、環境変数SHELLはシェルを実行したときに自動で設定されるものです。 変更しても無意味です。 4)は不要です。

関連するQ&A

  • FreeBSD 6.1 の pdksh

    こんにちは pdksh ですが 環境変数 EDITOR を vi にしておけば、 コマンド履歴が vi ライクに動作するはずなのですが、、 6.1 だと動いてくれません。 4.11 では、オッケーでした。 ksh のバージョンは、 両方(4.11, 6.1)ともに $ echo $KSH_VERSION @(#)PD KSH v5.2.14.2 99/07/13.2 です。 なにか、わかるかたいらっしゃいましたら、 教えてください。 その他関係ありそうな 変数として、両者(4.11, 6.1)ともに、 SHELL=/usr/local/bin/ksh TERM=xterm となってます。 よろしくおねがいいたします。

  • Linuxのシェルについて

    いつもお世話になっております。 Linux(redhat)でのシェルスクリプトを作成したいと思いますが、あるコマンドを実行して実行成功したか失敗したかをstatusで拾う形にしたのですがうまくいきません。アドバイスをお願いします。 例: #!/bin/sh set ST = $status date ←コマンド if [ $ST == 0 ]; then echo "**************" echo "* o k *" echo "**************" exit $NORMAL else echo "**************" echo "* N G  *" echo "**************" exit $ABEND fi

  • kシェルスクリプト内に行を挿入

    kシェルスクリプトで質問です。 例えば、以下のようなファイルがあったとします ********************************************** #!/bin/ksh   if (条件式1) then   コマンド1   コマンド2 endif if (条件式2) then   コマンド3   # aaaaaaaaaa else   コマンド4 endif ********************************************** ”コマンド3”の文字列をキーにして"# aaaaaaaaaa"の下に 「echo ttttttttt」 と、を追加するといった方法、ないでしょうか? もちろん、viで開いて追加する・・・というのではなく、、、 awkやsed等々、コマンドで。ご存知の方いらしたらお願いします。 ps. 余力があればjavaでも検討したいとは思いますが、javaはまったく初心者。。

  • unix上で ./configurの形式のコマンド

    unix上で ./configure(そのあとに、makeコマンドが続くような形式 で実行できるファイルの事を知りたいのですが、どういったワードで調べたら宜しいでしょうか? シェルの形式に近いのかな?と思ったのですが、コメントアウトされていて調べきれていません。 ./configure内は以下の通りです #! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.65 for cvc3 devel. # # # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, # 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # # # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else 以下略

  • PHPからシェルが動作しない

     PHPを通して外部コマンドを実行したいのですが、うまく動作してくれません。  具体的には、あるページでボタンを押したら、IPMessengerでメッセージを飛ばす機能(コマンド名:tipmsg)を実装したいのです。  シェルスクリプトは「コンソール」上では、きちんと動作してくれます。  例(shell.sh)  echo HELLO | tipmsg -e -u anyuser  また、コンソール上で「php」を直接動かしても、きちんと動作してくれます。(「php doshell.php」)  例(doshell.php) <? echo "Hello"; #動作するかどうかを確認するための表示させる system("shell.sh"); ?>  両方とも、コンソール上では、きちんと動作してくれるのですが、ブラウザ上からだと動作してくれません。  ちなみに、PHPからシェルを呼び出す以下のコマンドもすべて試しました。  exec("./shell.sh")  system("./shell.sh")  shell_exec("./shell.sh")  他にも環境変数をいじったり、アドミッションを調整したりもしましたが、まったく目的どおりの動作をしてくれません。  もしも、わかる方がいたらご教授のほど、お願いします。

    • 締切済み
    • PHP
  • シェルの変数セットについて

    どなたか教えてください。 以下のようなUNIXのシェルを作ってみたのですが変数がうまくセットされません。 これは仕様なんでしょうか??? シェルはkshでシェルの中でsuしているユーザはcshです。 例: ==test.sh== #!/bin/ksh A1="test test" su - user1 <<EOF echo "A1 :" $A1 set A2 =(test test) echo "A2 : " $A2 EOF exit ==実行結果== %./test A1 : test test A2 : %

  • perlからsystemコマンド呼ばれる時のシェルについて

    HP-UX/perl4 で作成したスクリプトを、Linux(Red Hat)/perl5 へ移植するに当たって、system関数の動作が異なり困っています。 HP-UX では ksh をシェルとして使用していたため、perl からのsysytem関数で実行するsystemコマンドも、kshで動作するものを使っていました。Linuxでもログインシェルをkshに設定しました。 ところが、HP-UXで使っていたprintコマンドが使用できず、以下のエラーメッセージが出ます。 sh: print: command not found シェルはkshを指定していても、perlからsystem関数やバッククウォート`` でシステムコマンドを実行するときは、shが使われるようなのです。 perl内の記述は以下のとおりです。 system("print 'a'"); "print"の前に"ksh "をつけたり、"print"を"echo"に変えると、正しく動作します。 移植するperlの本数が多いのと、print以外にもこの問題が起きるかもしれませんので、できれば perl 内からのシステムコマンド実行時にもログインシェルとおなじ ksh で動くようにしたいのですが、どのようにすればよいのでしょうか? よろしくお願いいたします。

  • crontabをshellで実行するには?

    Linux(Centos 6.2)でユーザを追加する際に、 そのユーザ権限で定期的に実行するプログラム(getmail)を設定したいと思っています。 で、shellでユーザを追加しようと思って #!/bin/sh # $1 = user $2 = pass $USRDIR = ユーザのホームディレクトリ useradd -d $USRDIR $1 echo "$1:$2\n" | chpasswd chown -R $1 $USRDIR chmod -R 770 $USRDIR echo "*/1 * * * * $1 /usr/bin/getmail 2>/dev/null\n" >> /etc/crontab としようと思ったのですが、 色々なサイトで、「crontabの設定ファイルを直接書くのは良くない、crontabコマンドを使え」と言われており、 crontabで設定したいのですが、crontab -u $1 -e とすると、viが起動してしまい、 どうしたら良いかわかりません。。。 どうしたら良いのでしょうか? お願いします。

  • kshの配列格納で教えてください

    表題の件で教えてください。 kshのシェルスクリプトを作成しているのですが、 原因不明のエラーで悩んでいます。 ■やりたいこと あるコマンド<CMD>の実行結果を配列DETAILに格納したい。 ■現状 <CMD>の実行結果を配列DETAILに格納しようとしています。 <CMD>の単体での実行結果は以下の通りです。 CMD実行結果(イメージ) ---------- Title ---------- Detail A ... B ... ---------- この結果を以下のようにして変数に代入しようとするとエラーが発生してしまいます。 set -A DETAIL @(<CMD>) set -A DETAIL `<CMD>` エラーメッセージは以下です。 ksh: set: --: unknown option 恐らく実行結果に「---」という文字列があるためエラーになっているのだと思われます。 これをエラーとせず、配列に---を格納する方法を何かご存じないでしょうか。

  • シェルスクリプトだと動かない [ -L fileS ] && echo "シンボリックリンクです"

    コマンドライン上で カレントディレクトリにある fileS がシンボリックリンクであるか調べる事ができるか、学習しております。コマンドライン上で [ -L fileS ] && echo "シンボリックリンクです" と打つと、動作する事を確認しました。 しかし、シェルスクリプトで(slink.sh) ======================= #!/bin/sh [ -L fileS ] && echo "シンボリックリンクです" ======================= と、同ディレクトリにスクリプトファイルを作成。 chmod ug+x slink.sh して ./slink.sh と打つと slink.sh: test: 引数が足りません。 と怒られます。 どこがどのように間違っているかわからないので ご教授いただけないでしょうか お願い致します。