一般的にUNIXコマンドといっているものは、
そのマシンで設定されているシェルから提供されているもの
という考え方で良いのでしょうか?
(UNIXコマンド=シェルコマンドなんでしょうか?)

またシェルスクリプトを作成する場合、提供されているコマンドは
つかえるのでしょうか?

このQ&Aに関連する最新のQ&A

UNIX とは」に関するQ&A: UNIXとは

A 回答 (2件)

>UNIXコマンド=シェルコマンドなんでしょうか?



違います。
シェルコマンドはシェル組込コマンドとも呼ばれ、そのシェルでないと使用できないものを指します。
それ以外のコマンドはシステムから提供されているものです。

>またシェルスクリプトを作成する場合、提供されているコマンドは
>つかえるのでしょうか?

使えますよ。
但しそのシェルスクリプトで選択しているシェル以外のシェルの組込コマンドは使用できませんのでご注意下さい。
    • good
    • 0

> そのマシンで設定されているシェルから提供されているもの


> という考え方で良いのでしょうか?

シェルから提供されているコマンドは「シェルの組み込みコマンド」と言われます。

一般的には、組み込みコマンドよりは、そうではない(シェルの外部の)コマンド
の方が多いです。

あるコマンドが OS や、その OS が同じでも、バージョンによって、組み込み
コマンドだったり、そうじゃなかったりします。

これを調べるには type という組み込みコマンドがあります。例えば、

% type echo

で、echo がどちらのタイプなのかがわかります。

大きく分けて、組み込みコマンドになっているのは以下の二種類があります。

・組み込みコマンドじゃないと、その機能が実装できない
・とてもよく使われるので、組み込まれている


> またシェルスクリプトを作成する場合、提供されているコマンドは
> つかえるのでしょうか?

シェルスクリプトで指定したシェルが提供しているコマンドは、基本的に
使えると思って間違いないです。

「基本的に」と書いたのは、例えば、そのシェルスクリプトをバックグラウンド
で動作させるようなときに、対話的な処理を求めるようなコマンドだった
場合には、使えないからです。まあ、これは組み込みコマンドに限った
ことではありません。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aと関連する良く見られている質問

QUNIXシェルの途中でユーザー切り替え

UNIXシェルの途中でユーザーを切り替える方法はありますか。

例)
 ・ユーザAで先頭100行を実行し、残りはユーザBで実行など・・・。

 ※suできれば良いのですが、対話形式のパスワード入力を促されてしまいますよね・・・。

Aベストアンサー

#3です。
>これを一つのシェルにして、都度ログインしている部分、及び、コマンド実行部分を自動化したい・・・、と言うのが趣旨です。
>それで、まとめたシェルについては、rootで実行ではなくて、一般ユーザで行ないたい・・・。
>という流れとなります。ニュアンスは伝わりましたでしょうか。

伝わってますよ。その前提での回答です。回答を良くお読みください。cmdaとcmdbを並べた親コマンドを作ってそれを一般ユーザーで実行します。
ただし、都度ログインということはログイン時の環境変数設定とかも影響するかもしれないので、必要に応じて、cmda, cmdb の先頭で、source ~usera/.profile などを実行する必要があります。

QUNIXシェル内での日付計算

日付計算系の質問はたくさんありましたがこのタイプが
無かったんで質問させていただきます。

やりたいことは題名そのまんまなんですが、具体的に言う
と、UNIX(今使ってるのがHP-UX11.0)上のバッチシェル
で、前日の日付を取得したいのです。できれば中間ファ
イル(一時ファイル)などを生成せずにシェル内で計算を
済ませたいのですが、何か方法はないのでしょうか。

(Ex.)
現在の日付   2002年1月1日
取得したい日付 2001年12月31日

具体的な方法とか書いてあるとさらにうれしいのですが・・・

それではよろしくお願いします。

Aベストアンサー

環境変数 TZ をいじることで実現できるはずです。

お使いの環境は日本標準時(TZ が JST-9)だと想定して話をします。

環境変数 TZ の -9 は、グリニッジ標準時との ずれ を表しているわけですが、
これを一日前にずらしてしまいます。

具体的には、こんな感じ。

% env TZ=JST+15 date


GNU のコマンドが席巻するまでは、割と有名だったやり方です。
もうひとつのやり方として、GNU の date をインストールして No.1 の回答の
ようにする、という手もありますね。

QUNIXシェル内での日付計算

UNIX(今使ってるのがHP-UX11i)上のバッチシェルで、
指定した日数分の前の日付を取得したいのですが、
何か方法はないでしょうか。


(例)
現在の日付: 20060511
指定した日数: 10(MAX値は100程度)

取得する日:20060501

Aベストアンサー

hpの技術情報によると、HP-UXなら参考URLの方法が使えるみたいです。

参考URL:http://www.unixguide.net/hp/faq/5.13.2.shtml

QUNIX:シェルを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になっている。

何を間違えているか教えて頂けますか?
宜しくお願いします。

Aベストアンサー

ログインシェルを変えたい、という話なら「 man chsh 」
単にkshを実行したいだけなら、通常通り kshを実行。

どちらにしても、環境変数SHELLはシェルを実行したときに自動で設定されるものです。
変更しても無意味です。
4)は不要です。

QUNIX(Bシェル)のプロンプトについて

Bシェルのプロンプトの設定は環境変数PS1に変えたい文字列を入れればOKですが、現在自分のいるディレクトリ名を表示させたい場合はどのようにしたらいいでしょうか。
PS1="["`pwd`"]" などと設定してもディレクトリが変わったらその設定したときのディレクトリ名のままです。
 また、ユーザ名も表示したいのですがsuコマンドでユーザ名を切り替えた場合プロンプトに表示させたユーザ名も変更させることはできるのでしょうか?

Aベストアンサー

純粋な sh でそれをやれとは酷な要求ですねぇ。

まず、su に関しては、最悪でも /usr/bin (unix によっては /bin ?)
より前のパスに、su っていう名前のシェルスクリプトを置いて、
適当にいじればいいかと思います。こっちは不可能ではない。

でも、cd は sh の仕様によっては無理かもしれません。シェルス
クリプトでは、親のディレクトリを変更できません。alias 機能が
あって、cd を上書きできたとして、本来の cd を実行できる機能
がないと、やはりつまづきます。最近の sh なら、alias に似た
function 機能がありますが、例えば SunOS の sh だと、cd コマ
ンドの上書きはできないようです。FreeBSD の sh と、Laser5
linux の bsh なら、次のようにできると思います。
cd () { command cd $1; PS1="`pwd` "; }


このカテゴリの人気Q&Aランキング

おすすめ情報