わさっきhb

大学(教育研究)とか ,親馬鹿とか,和歌山とか,とか,とか.

1文字コマンド

いきなりですが問題です.シェルで次のコマンドを実行すると,結果はどうなるでしょうか.

which a b c d e f g h i j k l m n o p q r s t u v w x y z

もちろん実行環境に依存する話です.手元のWindows 8.1 + Cygwin + zshの環境で実行すると,次のとおりとなりました.

$ which a b c d e f g h i j k l m n o p q r s t u v w x y z
a not found
b not found
c not found
d not found
e not found
f not found
g not found
h not found
i not found
j not found
k not found
l not found
m not found
n not found
o not found
p not found
q not found
r: shell built-in command
s not found
t not found
u not found
v not found
/usr/bin/w
/usr/bin/x
y not found
z not found

へえ,xというコマンドがあるんだと,喜び勇んで「x」を実行すると,大きなウィンドウが出まして…なんと,Xサーバが,立ち上がってしまいました.
あわてて終了させまして,次に「r: shell built-in command」が気になったので「r」を実行すると,再び,Xサーバが立ち上がりました(これも終了させました).「r」は,直前のコマンドを実行するという,zshのビルトインコマンドなのでした.
それではと,bashに切り替えてから,上のwhichコマンドを実行すると,「/usr/bin/r」と出てきます.またも「r」で…今度は,統計解析ソフトウェアのRが起動しました*1
「w」も実行しました.Cygwin環境においては,あまり面白い情報は出てきません.Ubuntuで実行すると,ログインユーザ名とプロセスが出力されました*2
英字を大文字にしたもの,具体的には以下のコマンドも,試しました.

which A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

試しましたが,zshでは,グローバルエイリアス*3の影響で,ひどい出力になってしまいました.

*1:ここまでコマンドを実行して,やっと,Cygwinのコマンド(というかファイル名)はcase-insensitiveなのを思い出しました.

*2:GNU Screenで複数のシェルを開いていて,1シェル1行で情報を知ることができます.コマンド実行待ちのときはシェルコマンド,実行中はそのコマンドが表示されます.

*3:アルファベット順で最初は「alias -g H='| head'」でした.