-to popdのエイリアスが機能していることを確認しながら、bashの起動時にロードできるファイルにすべてのエイリアスをダンプする簡単なスクリプトを作成しようとしています。
alias -p | sed 's/alias -=/alias -- -=/' > ~/.bash_aliases
コマンドラインから実行するとうまくいくようですが、スクリプトに入れて実行すると(上部#!/bin/bash
とchmod +x
)空のファイルが生成されます。私が逃しているbashの知識が何であるかを教えてくれる人はいますか?
重要な場合は、bash v4.2.10を使用しています。
答え1
シェルスクリプトは呼び出し元プログラムの環境変数などを継承しますが、エイリアスやコマンド履歴などの項目は継承しません。
すべてのエイリアスが共通の場所(たとえば)にある場合は、~/.bashrc
まずそのファイルをスクリプトにソースとして配置できます。
. $HOME/.bashrc
その後、シェルスクリプトの実行コンテキストでは、ファイルに定義されているすべてのエイリアスがあります.bashrc
。
エイリアス定義があちこちにある場合、簡単にマージする方法はありません。 「すべてのエイリアスを保存」を関数として記述する必要があります。たとえば、次のようなものを追加できます~/.bash_profile
。
function dumpalias {
alias -p | sed 's/alias -=/alias -- -=/' > ~/.bash_aliases
}
dumpalias
その後、ログアウトしてから再度ログインした後、希望の動作を取得するように指示できます。