scriptコマンドを使っている時にaliasが使えない問題について

このQ&Aのポイント
  • scriptコマンドを使っていると、.profileに保存したaliasが使えなくなります。
  • scriptコマンドを使用すると、shモードに変わってしまい、kshを使用できません。
  • 解決策として、.profileにalias設定を追加することで、scriptコマンドを使用している時でもkshを利用できます。
回答を見る
  • ベストアンサー

UNIXのscriptコマンド

scriptコマンドを使い自分のタイプしたものを記録しているんですが、そうすると.profileに保存してあるaliasが使えなくなります。例えば、.profileにalias -x lsl= 'ls -l'と保存してあり、scriptを使ってないときはlslとタイプしたらls -lと同じ動作をするけど、scriptコマンドを使ってる時はsh: lsl: not foundとでてしまいます。scriptコマンドを使うとなぜか、shモードに変わってしまうのが原因みたいです。これをscriptコマンドを使っている時でも、kshが使えるようにするにはどうしたらいいのでしょうか?.profileにそのように設定とかするのでしょうか、回答おねがいします。

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

  • ベストアンサー
  • osamuy
  • ベストアンサー率42% (1231/2878)
回答No.1

環境変数SHELLが設定されていると、scriptはそのシェルを起動しますが、指定されてなければshを起動します。 SHELLを明示的に記述しておいては。

参考URL:
http://www.linux.or.jp/JM/html/util-linux/man1/script.1.html
tenagaru
質問者

お礼

ありがとうございます。scriptコマンドの詳細がのったサイトがナカナカ見つからなく、このサイトはいいですね。これから試してみます。

関連するQ&A

  • UNIXのコマンドが使えないんです

    ls,pwd,cp,catなどのコマンドが一切使えず、入力すると "Commmand not found"と返されます。 唯一、cd だけが使えるのですが、どういうことなのかさっぱり分かりません。 最近、使い始めたばかりなので、詳しく教えてくれませんか。

  • 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になっている。 何を間違えているか教えて頂けますか? 宜しくお願いします。

  • 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 で動くようにしたいのですが、どのようにすればよいのでしょうか? よろしくお願いいたします。

  • cygwinシェルスクリプト内でのエイリアス

    cygwinのterminal上で alias abc=ls abc とやるとlsを実行したことになるのですが、 内容が #!/bin/bash alias abc=ls abc のa.shというシェルを作り実行すると、 ./a.sh: line 3: abc: コマンドが見つかりません というエラーが出て実行してくれません。 解決策が分かる方よろしくお願いします。

  • 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からシェルスクリプトを実行

    サーバ:XREA・CORESERVER PHPからシェルスクリプトを実行することは可能ですか? exec関数などがsafemodeでは動かないとのことなので、phpをcgiとして動かしているのですが、 どうもうまくいきません…。 というのも、lsなどのコマンドを実行しても、command not foundになってしまいます。 どなたか分かる方いらっしゃいますか?

    • 締切済み
    • PHP
  • linuxでaliasをbashrcに記載してsh

    linuxでaliasをbashrc(bashrcでなくともログイン時に読み込まれるprofile)に記載してあるコマンドを設定したいのですが、これが上手くいきません。 やりたいことは、bashrcで設定したコマンド内容をshスクリプトで実行したいのですが、これはどうやれば出来るのでしょうか? 以下に.bashrcの内容とshスクリプトの内容を記載します。 .bashrcの内容 # .bashrc # Source global definitions if [ -f /etc/bashrc ]; then . /etc/bashrc fi alias log='tail -f /var/log/messages' test01.shの内容 #! /bin/bash log 実行すると ./test01.sh: line 2: log: command not found となってしまいます。 ちなみに、shの中ではなく、ログイン後にコマンド(log)だけプロンプトに打つとちゃんとtail -f /var/log/messagesの内容が出力されます。 shの作りが悪いのでしょうか? どなたかご教授いただけますとありがたいです。 osはlinux redhat5.4です。 どうぞよろしくお願いいたします。

  • Intel C++ Compiler(Linux版)をインストールできない。

    Intel C++ Compiler 9.0 (Linux版)をインストールすることができません。 install.shを実行して、ライセンスファイルを指定したあとインストールが始まるとすぐに、 ./.././install_cc.sh: line 1272: ERROR: unable to find command "ls" !: command not found ./.././install_cc.sh: line 1276: Please add the location to the above commands to your PATH and re-run the script.: command not found ./.././install_cc.sh: line 1277: Please press Enter to continue...: command not found というエラーが出てしまいます。 lsコマンドが見つからないと書いてあるようですが、コンソールでlsコマンドは使えますし、PATHに/binも入っています。 どうしたらインストールすることができるのでしょうか? よろしくお願いします。

  • UNIXでのコマンドエラーについて

    初心者です。 UNIX上で下階層を含めて存在するファイルの数を知りたかったので ネットで検索して for d in `find . -type d`; do echo $d,`ls "$d" | wc -l`; done というコマンドをみつけて実行してみたのですが、 for: コマンドが見つかりません. d: 定義されていない変数です. というエラーとなってしまいます。 UNIX上のなにか制約があるのかどうかよく判りません。 どなたかなぜエラーが出るのかとこのコマンドを正常に実行する方法を教えていただけないでしょうか?

  • makeというコマンドがない

    vine2.1.5をインストールしたんですが、いつものようにtarを解凍してMakefileがあるディレクトリでmakeと打つと bash: make: command not found となってしまいます、lsなどの普通のコマンドは使えます、どういうことでしょうか?

専門家に質問してみよう