1. ssh 復習
連載記事「Linux 的な IBM i の使い方」の第3回は、シェルと基本コマンドを取り上げます。第2回で解説した ssh が前提となるので、前回の記事を再読してから今回の記事を読んでいただければと思います。
といいつつ、時間がないという方もいらっしゃると思うので、簡単に復習をしておきましょう。
まず、IBM i には AIX/Linux 環境がありますが、ここにアクセスする方法は2種類あることを説明しました。
- QP2TERM プログラム
- ssh 接続
QP2TERM は、5250 画面で実行可能なプログラムで、エミュレータ構成があれば気軽に使えるインターフェースです。ただし、5250 データストリームの制約はどうしても受けてしまうので、AIX/Linux 環境で提供されている機能を十二分に活用するインターフェースとしては心許ないかもしれません。
もう一つのインターフェースは、他のプラットフォームでも利用されている ssh 接続です。ssh は遠隔のサーバーにアクセスして、コマンドを送信し結果を受信するための通信経路を提供します。遠隔のサーバーにアクセスするためには、安全にアクセスできることが基本なので、以下が基本機能として備わっています。
- 通信経路は暗号化されている
- アクセスしているサーバーが本当のサーバーであることを確認する公開鍵認証機能がある
- ユーザー認証はパスワード認証と公開鍵認証の2つを選択できる
公開鍵暗号の仕組みを数学的に完全に理解するのは困難ですが、概要については前回の記事で解説していますのでぜひ読み返して理解を深めてください。
本来であればユーザー認証も公開鍵認証を用いるべきですが、前回は紙面の都合上パスワード認証だけを解説しました。今後の連載で、ユーザー認証を公開鍵で行う方法も取り上げる予定です。
それでは、ssh で IBM i に接続できたというところから第3回の記事を進めていきましょう。今回は以下を解説していきます。
- IBM i のファイル・システム
- シェル
- シェルで実行することの多い基本コマンドの解説
- IBM i のコマンドをシェルから実行して結果を再利用
それでは始めていきましょう。
2. ファイル・システムについて
シェルを使用して様々な操作を行う場合には、コマンドの対象となるファイルがどのように保管されているのかを知る必要があります。そこで、シェルの解説に入る前に、IBM i のファイル・システムについて簡単に触れておきたいと思います。
コンピュータは一般的にディスクと呼ばれる記憶域内に必要な情報を記録するのは皆さんご存知の通りです。なぜ記録するかというと、将来参照したいからですよね。記録した情報は、一定の作法に基づいていつでも簡単に取り出すことができる仕組みが必要です。これをファイル・システムと言います。基本的に、すべてのオペレーティング・システムは独自のファイル・システムを持っています。
例えば、皆さんが普段使われている Windows では、物理的なディスク毎にアルファベットのドライブ識別子を割り当て、その中を ¥ マークを使って階層化してファイルを記録しています。例えば、
C:¥Users¥ogawa¥Documents¥test.xlsx
とあれば、test.xlsx という名前の Excel ファイル(拡張子で判断しています)の保管場所は、
ドライブ C 直下の Users フォルダ内の ogawa フォルダ内の Documents フォルダ内にある
ということがわかります。
また、Linux や MacOS では、階層化は ¥ ではなく / を使用して表現します。
/Users/ogawa/Documents/test.txt
この例では、test.txt という名前のテキスト・ファイルは、Linux や MacOS が管理しているディスク内の、
Users ディレクトリ内の ogawa ディレクトリ内の Documents ディレクトリ内にある
ということがわかります。
Windows と Linux および MacOS は、ドライブという概念や階層構造を区切る記号が異なることを除けば同じようなファイル・システムになっていて、階層化を自由に作成していくことが可能ということがおわかりいただけると思います。
では、IBM i はどのようにして情報を保管しているのでしょうか。
IBM i オペレーティング・システムは、情報を名前を付けて保存する際、フォルダやディレクトリではなくライブラリーというオブジェクトに登録するという点が異なります。さらに、ライブラリーは階層構造にできない(ライブラリーの中にライブラリーを登録することはできない)ため、他のオペレーティング・システムとは異なり、名前を付けて保管した情報は、以下の指定だけで一意に特定することが可能です。
OGAWA/PGM01
上記の例では、OGAWA ライブラリーにある PGM01 という名前のオブジェクトを指しています。オブジェクトとは名前をつける単位ですが、他のオペレーティング・システムとは異なり拡張子がないので、オブジェクト内部にオブジェクト・タイプという情報を保持します。例えば、PGM01 が実行可能なプログラムだとすると、*PGMというオブジェクト・タイプが割り当てられます。
では、ssh で IBM i にアクセスした場合のファイル・システムはどうなっているのでしょうか。
前回の記事でお伝えしたように、ssh で接続するのは IBM i 内の AIX/Linux 環境です。この環境で動くプログラムが理解できるのは、IBM i ネイティブのファイル・システムではなく Linux や MacOS と同じ階層化のファイル・システムなので、IBM i のファイル・システムだけではその要求に対応することができません。
そこで、現在の IBM i は、ネイティブのライブラリー・ファイル・システムを含んだ IFS というファイル・システムを採用しています。
IFS は Integrated File System の略で、全体は AIX/Linux ファイル・システムであり、そのファイル・システムのルートの直下にネイテイブ・ファイル・システムを QSYS.LIB というディレクトリ名で管理しています。
IFS の表記に従えば、上記の OGAWA ライブラリー内の PGM01 というプログラムは、
/QSYS.LIB/OGAWA.LIB/PGM01.PGM
という記述で表現します。QSYS.LIB 内では、先程お伝えしたオブジェクト・タイプを拡張子で表します。もちろん、ネイティブのファイル・システムをディレクトリ構造として参照できるようにしているだけなので、例えば、OGAWA.LIB ディレクトリ内に OGAWA2.LIB ディレクトリを作成することはできません。
先ほど、「ライブラリーの中にライブラリーを登録することはできない」と書きましたが、OGAWA.LIB は QSYS.LIB に登録されていますね。これはなぜでしょうか。
実は、IBM i のネイティブ・ファイル・システムにはルールが2つあります。
- オブジェクトは必ずどこかのライブラリーに登録しなければならない(ライブラリー・オブジェクトも例外ではない)
- ライブラリーを登録できるのは QSYS ライブラリーのみ
そして QSYS ライブラリーのみが例外で、単独でファイル・システム上に存在できるのです。
あくまで、QSYS.LIB ディレクトリが IFS ファイル・システム上では例外であり、それ以外のディレクトリは自由にディレクトリの階層構造を作成することができます。
/home/OGAWA/test.txt
IFS は AIX/Linux と同等なので、シンボリック・リンク(厳密には異なるが、Windows のショートカットのようなもの)なども作成することが可能である点は覚えておいてください。
ssh で接続してシェルで作業する際は、現在どのディレクトリで作業しているかが重要になります。これを現行ディレクトリ、あるいはカレント・ディレクトリといいます。後ほど触れますが、現在どのディレクトリにいるのかを確認するには pwd コマンドを使用します。
$ pwd /home/OGAWA
上記は、/home/OGAWA がカレント・ディレクトリであることを示しています。
カレントディレクトリとひとつ上のディレクトリは .(ドット)を使って表現します。
ドット | 意味 |
---|---|
.(ひとつ) | カレント・ディレクトリ |
..(ふたつ) | 一つ上のディレクトリ |
例えば、/home/OGAWA から一つ上のディレクトリに移動する場合は、cd ..を実行します。
$ pwd /home/OGAWA $ cd .. $ pwd /home
また、カレントディレクトリが /home/OGAWA の時に、/home/OGAWA/xxxxx.sh を実行するには、
$ pwd /home/OGAWA $ xxxxx.sh
でもよいですが、
$ pwd /home/OGAWA $ ./xxxxx.sh
と明示的に「カレントディレクトリにある」と記述することもできます。
「./xxxxx.sh」の意味は、「. (カレントディレクトリ)内の xxxxx.sh」ということです。「/」がないと「.xxxxx.sh」という名前のファイルになってしまうので注意してください。
3. シェルとは
それでは、ssh 接続で使用されるシェルについて見ていきましょう。
そもそもシェルとは、オペレーティング・システムの様々な機能を実行できるようにするための、ユーザーが使用するインターフェースのことを言います。コンピュータのインターフェースといえば、普段皆さんが使われているのはグラフィカル・ユーザーインターフェス(GUI)ですね。Windows や iPhone、Android など、現在使用されている OS のほぼすべてが GUI を提供しています。
これに対して、ssh で使用されるシェルは GUI ではなく、キャラクタ・ユーザー・インターフェース(CUI)です。キャラクタ・ベースのインターフェースなので、実行したい機能に対応したコマンドを都度指定する必要があります。
ちなみに、IBM i には QCMD というプログラムがあり、実行するとコマンド入力画面が表示されるのはご存知の方も多いと思います。この画面を経由して IBM i のコマンドを入力し、OS の機能を実行することができます。つまり QCMD もシェルの一種ということが言えます。
ssh でサーバーに接続すると、シェルが表示されて様々なコマンドを入力することができるようになります。第2回の記事の最後に ssh を終了するために exit を入力しましたが、これはシェルを経由してサーバーに ssh 接続を終了するように指示しているのです。
シェルの種類
では、IBM i で利用可能なシェルを解説します。
第2回で触れた IBM i 側の導入が必要なライセンス・プログラムが入ったマシンでは、シェル・プログラムは以下の3つが使用可能です。
No. | シェル | 説明 |
---|---|---|
1 | bsh | Bourne シェル |
2 | ksh / ksh93 | Korn シェル |
3 | csh | C シェル |
歴史的には、Bourne シェルから派生したのが Korn シェルで、その後 ksh93 と拡張されていきます。 C シェルは UNIX OS である BSD のセカンドバージョン用に開発されたシェルで、ksh および bsh とは区別されます。
上記のシェルはすべて /QOpenSys/usr/bin ディレクトリ内のものを参照しますが、すべてシンボリック・リンク(Windows のショートカットのようなもの)であり、実態はそれぞれ以下ディレクトリのファイルを使用します。
シェル | 実態 |
---|---|
bsh | /QOpenSys/QIBM/ProdData/OS400/PASE/bin/bsh |
ksh | /QOpenSys/QIBM/ProdData/OS400/PASE/bin/ksh |
ksh93 | /QOpenSys/QIBM/ProdData/OS400/PASE/bin/ksh93 |
csh | /QOpenSys/QIBM/ProdData/OS400/PASE/bin/csh |
参考までに、sh というシェルもありますが、このリンクは ksh を参照しています。つまり sh と ksh は同じシェルを実行するということです。
シェル | 実態 |
---|---|
sh | /QOpenSys/QIBM/ProdData/OS400/PASE/bin/ksh |
4. シェルの変更
IBM i に ssh で接続するとデフォルトで使用されるシェルは bsh です。使用されているシェルを確認するには echo $0 を実行します。
$ echo $0 -bsh
シェルはプログラムなので、どのシェルを使用するかは自由に変更することが可能です。ssh に接続した状態でシェルを変更するには、そのシェルプログラム名を入力して Enter キーを押します。以下は ksh に変更し、変わったことを確認する例です。
$ ksh $ echo $0 ksh
上記変更は一時的なもので、ssh で再ログインをするとデフォルトの bsh シェルで開始されます。このデフォルトのシェルを変更するには以下の2通りがあります。
- システム全体でシェルを変更する
- ユーザー毎にシェルを変更する
システム全体でシェルを変更する
システム全体でデフォルトのシェルを変更するには、sshd の構成ファイル(QOpenSys/QIBM/UserData/SC1/OpenSSH/etc/sshd_config)に以下を入力します。
下記例では、デフォルトのシェルを bsh から ksh に変更しています。
# default Shell ibmpaseforishell /QOpenSys/usr/bin/ksh
構成ファイルの修正なので、変更を有効にするには ssh デーモンを再起動する必要があります。
ENDTCPSVR SERVER(*SSHD) STRTCPSVR SERVER(*SSHD)
STRTCPSVR を実行する前に、WRKACTJOB SBS(QUSRWRK) で ssh デーモン等(QP0SPWP)が終了していることを確認してください。
ユーザー毎にシェルを変更する
システム全体ではなく、ユーザー毎(ユーザー・プロファイル単位)に、使用するシェルを設定することもできます。これを実行する方法は以下の2通りです。
- SET_PASE_SHELL_INFO プロシージャを実行する
- chsh(Change Shell)を実行する
chsh コマンドは、別途インストールする必要があるので、ここでは SET_PASE_SHELL_INFO プロシージャで解説します。
このプロシージャは SQL CALL ステートメントで実行するもので、自分自身もしくは(権限があれば)他のユーザーのデフォルトシェルを変更可能です。以下の例では、ユーザー OGAWA のデフォルトのシェルを ksh に設定している例です。
CALL SET_PASE_SHELL_INFO('OGAWA', '/QOpenSys/usr/bin/ksh')
設定ができたかどうかは QSYS.USER_INFO ビューを使用して確認することができます。
SELECT SHELL_PATH FROM QSYS2.USER_INFO WHERE USER_NAME = 'OGAWA'
それぞれ SQL なので、5250 画面からは STRSQL コマンドを実行して対話的に、あるいは ACS の SQLスクリプトの実行でそれぞれ実行してください。
先程紹介したように IBM i で利用可能なシェルは 3 種類ですが、実際に ssh で操作してみると、矢印キーでカーソルを移動できないなど使い勝手が悪いと感じられると思います。実は現在、Linux など他のプラットフォームで一般的に利用されているシェルは bash がほとんどです。
bash は、Bourne-Again Shell の略です。その名の通り、bsh の後継シェルですが、ksh や csh で有用な機能を取り込んで開発されており、Linux 環境においてはデファクト・スタンダードのシェルとなっています。IBM i でももちろん利用可能なのですが、別途インストール作業が必要です。
詳細は 次回の記事で紹介予定です。
5. 基本コマンド
それでは、ssh で接続したあとで、シェルを介して実行できるコマンドを見ていきましょう。
コマンドには、組み込みコマンドと外部コマンドの2種類があります。
組み込みコマンド
組み込みコマンドとは、シェル内部で実行されるものです。使用しているシェルによって、それぞれ異なるので注意が必要です。また、組み込みコマンドと同名の外部コマンドもあり、それぞれ動作が異なる可能性があるので使用しているシェルとその内部コマンドの一覧をよく見ておく必要があります。
コマンドが組み込みコマンドかどうかを確認するには、type コマンドを使用します。例えば、bsh シェルにおいて、cd は内部コマンドです。
$ echo $0 bsh $ type cd cd is a shell builtin
外部コマンド
$ type bsh bsh is /QOpenSys/usr/bin/bsh
bsh は外部コマンドであることがわかります(外部コマンドという言い方は、あまり一般的ではないかもしれません。この連載では、組み込みコマンド以外の総称だと理解してください)。
シェルからコマンドを実行する場合に、組み込みコマンドとして存在しなければ外部コマンドが検索されます。検索には $PATH 環境が使用されます。
今回の IBM i のデフォルトの PATH 環境は以下の通りです。
/QOpenSys/usr/bin:/usr/ccs/bin:/QOpenSys/usr/bin/X11:.:/usr/bin
各ディレクトリが「:(コロン)」で区切ってありますが、左から指定したディレクトリ内を検索し、見つからなければ次のディレクトリというふうに検索をしていきます。上図の PATH の検索順位は、
- /QOpenSys/usr/bin
- /usr/ccs/bin
- /QOpenSys/usr/bin/X11
- .
- /usr/bin
です。5番目のディレクトリを探しても見つからない場合は、「not found」と表示され指定したコマンドは当然実行されません。IBM i ユーザーの方には、ジョブのライブラリー・リストと同様だと思っていただければわかりやすいと思います。
上記4番目は「.(ドット)」です。すでに説明しましたが、カレントディレクトリを表します。
必須コマンド
それでは IBM i に ssh 接続して頻繁に使用するコマンドを厳選して紹介します。どれも重要なコマンドなのでぜひ覚えてください。
ディレクトリ操作
コマンド | 意味 | 機能 |
---|---|---|
cd | change directory | カレントディレクトリから別のディレクトリに移動する |
ls | list | ファイルの一覧等を表示する |
pwd | print working directory | カレントディレクトリの絶対パスを表示 |
ls コマンドの例
$ pwd /QOpenSys/usr/bin $ ls -l total 2040 lrwxrwxrwx 1 qsys 0 80 Apr 25 18:38 Rfile -> ../../QIBM/ProdData/OS400/PASE/bin/Rfile drwxr-sr-x 2 qsys 0 24576 Apr 25 18:38 X11 lrwxrwxrwx 1 qsys 0 80 Apr 25 18:38 admin -> ../../QIBM/ProdData/OS400/PASE/bin/admin lrwxrwxrwx 1 qsys 0 80 Apr 25 18:38 alias -> ../../QIBM/ProdData/OS400/PASE/bin/alias
オプション l を指定すると、詳細な情報を表示します。上記例では、admin ファイルは -> が使われているのでシンボリックリンクで、参照しているのは、2つ上のディレクトリ(../.. で、/QOpenSys をさす)からみた QIBM/ProdData/OS400/PASE/bin/admin を参照しています。絶対パス表記は、/QOpenSys/QIBM/ProdData/OS400/PASE/admin です。
ファイル操作
コマンド | 意味 | 機能 |
---|---|---|
cat | concatenate | ファイルを連結する、ファイルの中身を見る |
cp | copy | ファイルをコピーする |
file | file | ファイルの形式を確認する |
find | find | ファイルやディレクトリを検索する |
mv | move | ファイルやディレクトリの名前の変更および移動をする |
rm | remove | ファイルやディレクトリを削除する |
tail | tail | 長いテキストファイルなどの末尾だけおよび先頭だけを表示する |
which | which | コマンドを $PATH のディレクトリを調べて見つかったらフルパスを返す |
rm コマンドの例
- ls コマンドでファイルの一覧を取得(-la は詳細情報表示かつ隠しファイルも表示の指定)
- 削除したいファイルの名前を確認後、rm コマンドで削除
$ ls -la total 64 drwxrwsrwx 2 ogawa 0 8192 May 15 14:13 . drwxrwsrwx 3 qsys 0 8192 Apr 25 20:02 .. -rw------- 1 ogawa 0 1028 May 15 14:38 .sh_history -rw-r--r-- 1 ogawa 0 8 May 15 14:13 sample.txt $ rm ./sample.txt $ ls -la total 48 drwxrwsrwx 2 ogawa 0 8192 May 15 14:38 . drwxrwsrwx 3 qsys 0 8192 Apr 25 20:02 .. -rw------- 1 ogawa 0 1054 May 15 14:38 .sh_history $
その他
コマンド | 意味 | 機能 |
---|---|---|
echo | echo | 画面に文字列を表示 |
env | environment | 環境変数の設定など |
grep | global regular expression print | 正規表現を使用した文字列の抽出コマンド |
wc | word count | テキストファイルの文字数や行数を数える |
パイプ
コマンドの出力結果を他のコマンドに渡すための機能としてパイプがあります。パイプラインを略してパイプといいますが、工夫次第で色々と便利に使えるので覚えておいてください。
例)特定のディレクトリ内のファイル数をカウントしたい
$ cd /QOpenSys/usr/bin $ pwd /QOpenSys/usr/bin $ ls -l | wc -l 251
上記は、ls -l で /QOpenSys/usr/bin ディレクトリ一覧を取得し、パイプ(|)を使って wc コマンドに渡し、-l オプションで行数を表示しています。
リダイレクト
コマンドの実行結果の出力先を変更することができます。リダイレクトには、主に > と >>が使用されます。
リダイレクト | 意味 |
---|---|
> | 出力のリダイレクト |
>> | 出力をファイルの末尾に追加 |
例)カレントディレクトリ内の sample.txt ファイルの末尾に文字列 abcdefg を追加する
$ tail ./sample.txt 1234567890 $ echo 'abcdefghij' >> ./sample.txt $ tail ./sample.txt 1234567890 abcdefghij
例)ls -l の結果を、ファイル sample02.txt に出力する
$ ls -l > sample02.txt $ tail ./sample02.txt lrwxrwxrwx 1 qsys 0 74 Apr 25 18:38 vi -> ../../QIBM/ProdData/OS400/PASE/bin/ex lrwxrwxrwx 1 qsys 0 74 Apr 25 18:38 view -> ../../QIBM/ProdData/OS400/PASE/bin/ex lrwxrwxrwx 1 qsys 0 80 Apr 25 18:38 wait -> ../../QIBM/ProdData/OS400/PASE/bin/alias lrwxrwxrwx 1 qsys 0 74 Apr 25 18:38 wc -> ../../QIBM/ProdData/OS400/PASE/bin/wc lrwxrwxrwx 1 qsys 0 78 Apr 25 18:38 what -> ../../QIBM/ProdData/OS400/PASE/bin/what lrwxrwxrwx 1 qsys 0 80 Apr 25 18:38 which -> ../../QIBM/ProdData/OS400/PASE/bin/which lrwxrwxrwx 1 qsys 0 80 Apr 25 18:38 xargs -> ../../QIBM/ProdData/OS400/PASE/bin/xargs lrwxrwxrwx 1 qsys 0 78 Apr 25 18:38 yacc -> ../../QIBM/ProdData/OS400/PASE/bin/yacc lrwxrwxrwx 1 qsys 0 76 Apr 25 18:38 yes -> ../../QIBM/ProdData/OS400/PASE/bin/yes lrwxrwxrwx 1 qsys 0 86 Apr 25 18:38 zcat -> ../../QIBM/ProdData/OS400/PASE/bin/compress
6. IBM i コマンドの実行
ここまでシェルと基本コマンドについて説明してきましたが、これらは IBM i の AIX/Linux 特有のものではなく、一般的な UNIX 系のシェルやコマンドの話です。先程の基本コマンドも、使い方の詳細については Web や書籍による Linux 情報を参照いただければ、各コマンドのスイッチ等も含めて理解することができるはずです。IBM i ユーザーで Linux コマンドは初めてという方も、ssh を通してぜひ Linux の世界を体験してみてください。
さて、せっかく IBM i に ssh 接続しているので、もうひとつコマンドを紹介したいと思います。
system コマンド
system コマンドを使えば、ssh で接続したシェルから IBM i の CL コマンドを実行できます。実行結果のスプール出力は、標準出力(シェルの画面)に表示されます。
このコマンドも /QOpenSys/usr/bin に存在しているので、今回の環境でももちろん使用することができます。
例えば、DSPLIBL コマンドを system コマンドで実行するには、
$ system 'DSPLIBL'
と指定します。私が使用している環境では、以下のように出力されました。
$ system 'DSPLIBL' 5770SS1 V7R4M0 190621 ライブラリー・リスト 24/05/15 15:54:24 s゚ーニ゙ 1 ASP [bボ[メー タイプ 装置 テキスト記述 QSYS SYS システム・ライブラリー QSYS2 SYS CPI用のシステム・ライブラリー QHLPSYS SYS QUSRSYS SYS System Library for Users QSHELL PRD QGPL USR GENERAL PURPOSE LIBRARY QTEMP USR * * * * * リストの終わり * * * * *
この結果はもちろんリダイレクト可能です。DSPLIBL の結果をテキストファイルに出力するには以下を実行します。
$ system 'DSPLIBL' > dsplibl.txt
dsplibl.txt はファイル名のみでディレクトリ情報は付加していないので、現行ディレクトリに作成されます。作成されたかどうかは ls コマンド等で確認してください。
もうひとつ、QGPL ライブラリーのオブジェクト・タイプが *FILEのものはいくつあるかをカウントしてみましょう。
$ system 'DSPOBJD OBJ(QGPL/*ALL) OBJTYPE(*ALL)' | grep '*FILE' | wc -l 43
上記は、system コマンドの結果を grep に渡し、*FILEを含む行のみを選択してそれを wc に渡し、行数をカウントして結果を画面に出力しています。
どうも、私が使っているシステムの QGPL ライブラリーには、*FILE オブジェクトが 43 存在しているようですね。
さらに、物理ファイル数は以下で出力可能です。
$ system 'DSPOBJD OBJ(QGPL/*ALL) OBJTYPE(*ALL)' | grep '*FILE' | grep 'PF' | wc -l 35
工夫次第で IBM i の情報をネイティブ・コマンドより簡単に取得できる場合もあるので、皆さんのアイデアで system コマンドを最大限に利用してください。
7. まとめ
今回の内容も盛り沢山でしたがいかがでしたか?オープン系の方には当たり前のことばかりですが、IBM i ユーザーの方には新しい発見がたくさんあったのではと思います。特に、system コマンドで AIX/Linux 環境から IBM i のコマンドが実行できるのは、IBM i ユーザーの方にとっても、オープン系の方にとっても面白い機能だと思います。
今回 grep コマンドについては文字列の抽出コマンドとの説明で使用例だけ紹介しましたが、正規表現を使うことでより便利に使うことが可能なので、今回説明していないその他の便利なコマンドとともに今後解説していく予定です。
次回はいよいよオープンソースの世界に足を踏み入れます。新しいソフトウェアの導入は、IBM i のライセンス・プログラムとしてではなく、オープン系のツールを使ってインストールすることになるので、そのツールの解説と実際のインストール作業を解説する予定です。
今回解説したシェル・プログラムは少々使い勝手がよくない(カーソル移動キーが使えないなど)ものでしたが、次回は bash もインストールするので、それを使った環境構築も行う予定です。
それでは次回をお楽しみに!
参考文献
- 俺的備忘録 『現在使われているkshのバージョン確認』
- Qiita 『シェルの歴史 総まとめ(種類と系統図)と POSIX の役割 〜 シェルスクリプトの現在・過去・未来【POSIX改訂間近】』
- 株式会社グローバルゲート公式ブログ 『シンボリックリンクとは?Windowsで使える便利な機能の紹介』
- IBM Support 『Changing the Default Shell for Inbound Secure Shell (SSH) Connections to the IBM i』
- IBM Support 『QSYS2.SET_PASE_SHELL_INFO()』
- IBM Documentation 『AIX 7.2』