質問: **背景** linuxサーバ向けの手順を作成し、実行する際に、teratermログを分かりやすくするために、プロンプト上に「コメント」を適宜入力しコマンド実行をします。 例えば、ログインシェルが/bin/bashの場合、プロンプト上に下記のように入力しコメントを実現しています。 ``` # ホスト名を出力 umame -n ``` **事象** しかし、ログインシェルが/bin/cshの場合、上述と同様にプロンプト上にコメントを入力すると、コマンドとして扱われてエラーとなります。 なお、cshスクリプトとして、シェル化した場合は、"#(シャープ)"が正しくコメントとして扱われています。 **確認したいこと** ログインシェルがcshの場合 1. プロンプト上で、"#(シャープ)"をコメントとして扱えない原因 2. プロンプト上でコメント化する方法 **現時点で把握していること** 〉2. プロンプト上でコメント化する方法 ":(コロン)"を利用するとこで、処理されないようにし暫定対処。 ``` : '#ホスト名を出力' umame -n ```
回答: この話題の場合「プロンプト」というよりは「対話的シェル」のほうが用語として適切なのでそう読み替えるとして > > プロンプト上で、"#(シャープ)"をコメントとして扱えない原因 > > > `csh` および `tcsh` の仕様だからではダメですか? 仕様の根拠として @metropolis 氏のリンク先では対話的シェルでコメントを入力する必要はないからと推定されています。 > > プロンプト上でコメント化する方法 > > > `bourne-shell` 系に乗り換えましょう!絶対に手早くて将来的に混乱が無いです。 どうしてもなにがなんでも `csh` でなきゃならないのなら、指摘の通り `:` を使うのが手早そうです。 `:` コロンと `true` はどちらも、全部の引数を無視して終了コード `0` つまり成功を返すコマンドです(組み込みコマンドとして、また外部コマンドとして)コメントっぽく取り扱うのであればタイプ数的に `:` のほうが手早いです。 初心者に読ませるためのマニュアルを作っているなどであれば「ログ」上は真に入力すべき文字と返される文字だけにしておいて、解説は図示で吹き出しなどに記載したほうが混乱を招かないと思います(写経する人はコメントも写経して「ここではこんなこともタイプする必要があるんだ!」と勝手に納得すること必至) オイラ個人的にはログインシェルとして `csh` をつかうことは無いし、同僚にも薦めません。「シェルスクリプト」を `csh` で書くのはあり得ないし、`chsh` コマンドで `bash` 等への切り替えをお勧めします。