※コメントでご指摘をいただき調べなおしたところ、最初の記載に誤りがあったので、一部修正しました。
#rmと侠気
侠気(きょうき、おとこぎ)とは、強きをくじき弱きを助ける心だて(広辞苑)、だそうだ。
~~最近のシステムでは、rm
はrm -i
にaliasがはられている。これは侠気なのかもしれない。~~rmにiオプションのaliasがはられている場合、ほんとうにこのファイルを消してもいいのかという迷いや弱さを助けているのだろう。
ちなみに、設定されているaliasを無視したい時は、(POSIXの仕様を工夫して)コマンドの前か途中にバックスラッシュをはさむなどのテクニックが使われる。
#aliasについて
aliases
(aliases(5))じゃなくalias
。ここではbash
(bash(1))やtcsh
(tcsh(1))の方向から見ていく。たとえば私のll
はこうなっている。ls -l
と同じということであり、上記の通り\ll
と入力すればただのll
となる。
% alias | grep ^ll
ll ls -l
#いつからrmにはiオプションがついているのか?
でもって先日、ゆたかさんのツイートなどをみてふと思ったのが、
問い合わせなしにファイルが削除されるのが精神的にしんどいので、rmコマンドはエイリアスで「-i」オプションを付けるようにしているのですが、昔々職場の先輩に「そんなもん付けているのかよ」って言われた覚えがあります。
— ゆたかさん (@yutakakn) 2018年7月15日
Red Hat系Linuxはrootユーザだと「rm -i」でエイリアスされているそうです。Fedora28では確かにそうなっていました。 pic.twitter.com/FD4lA74K0B
— ゆたかさん (@yutakakn) 2018年7月16日
そういえば自分は手動でaliasはってないのに、rm
はrm -i
になってるよねと思ってaliasを見たら設定済みだった。
% alias | grep ^rm
rm rm -i
寝ている間に小人さんが設定したというケースは除いて、となると、ユーザ作成時にすでにそうなっていたということなの~~だろう。~~だろうか?
#skelを覗く
「覘く」という使い方は常用ではないらしい。--それはともかくとして、useradd(8)をみると、(指定すれば)/etc/skel の中身が新規ユーザの$HOMEにコピーされる、とある。Windowsの世界でいうところのデフォルトプロファイルみたいなもの、ともいえるかもしれない。1
それで/etc/skel/ を見てみてみると、たしかに.bashrcとかがある。(環境によっては、/usr/local 以下にskelディレクトリがあるだろう。)その.bashrcとかに、書いてあるのだった。
(追記)ただし、lsなどのaliasは書いていたが、ズバリrmにiオプションのaliasは無かったように見える。じゃあどこで設定されているのだろうか?
なので、強引にまとめると、ほぼほぼ最近のシステムであれば、rm
には -i
オプションがaliasで設定されていて、(初学者は)それを気にしないで入力しているということになる。
設定したことが無くても、 alias
と入力してrmにiオプションがついていることがあって、その時は、初学者が「rmのiオプション」を知らなくても、「rmを入力したら確認が出るのだな」と思うのだろう。
あとUbuntuでは「超最小構成」ってのがあって、--Ubuntu Minimal Cloud Imagesという--、まあそもそもIoTというか人間じゃないユーザ向け2のやつなんですけど、このへんまでいくと__スクリーンエディタもないっていう状態__なので、勉強にはおすすめかもしれませんね。
#参考など
-
http://inaz2.hatenablog.com/entry/2013/05/16/213211
--シェルのエイリアス展開を無効化するには頭にbackslashをつける(ももいろテクノロジー),2013/05
この記事でPOSIXのことを思い出しました。ありがとうございます。
-
http://gihyo.jp/admin/clip/01/ubuntu-topics/201807/13
--Ubuntu Weekly Topics 2018年7月13日号 Ubuntu Minimal Cloud image,ArtfulのEOL