後で考える

本、旅行、資格、お酒について書くと思います

改行コードが原因で bash の設定ファイル読み込みが上手くいかなった話

bashであれば source と言うコマンドを使って何らかの設定ファイルに書かれているコマンドを実行できます。

例えば以下のようなsample.confがカレントディレクトリにあった場合、

name=Tanaka

以下を実行することで name と言う環境変数を保持できます。

$ source ./sample.conf

通常の bash の実行とは異なり、使用した変数などの情報を保持できるので、 .bashrc や .bash_profile の読み込みに使うことも多いと思います。

今回はこの読み込みにあたって非常に単純なところで躓いてしばらく格闘していたので共有します。

結論からいうと改行コードが間違っていました。

bash など shell の改行コードは LF ですが、 windowsVS code で改行コードが CR + LF の設定ファイルを作成しておりました。

おかげで読み込んだ文字列がうまく表示できなくて困っていたと言う話です。

ちなみに CR は行の先頭に戻る動作をするので、

source ./sample.conf
name2=Yoshitake
echo $name2$name

のような処理を実行すると、YoshitakeTanaka ではなく、 Tanakaake と言う文字列が出力されます。

先ほどMacで同様のことを実験してみたのですが再現できなかったので、環境にもよるのでしょうね。

言いたかったことは、shell でうまいこと動作しなかったら改行コード気をつけようねと言うことです。

おそらく拡張子を .sh でファイル作成すると自動で改行コードを LF に設定してくれるようなので、 .txt や .conf のような設定ファイルこそ用心ですね。