GNU/Linux >> Linux の 問題 >  >> Linux

サブシェル/子プロセスのエイリアス

エイリアスは継承されません。そのため、伝統的に bashrc に設定されています profile ではありません .ソース script.sh .bashrc から または代わりにシステム全体のもの。


それらをサブシェルに継承させたい場合は、代わりに関数を使用してください。それらは環境にエクスポートできます (export -f )、サブシェルにはこれらの関数が定義されます。

したがって、あなたの例の1つについて:

rmvr() { rm -rv "[email protected]"; }
export -f rmvr

それらがたくさんある場合は、最初にエクスポート用に設定してください:

set -a # export the following funcs
rmvr() { rm -rv "[email protected]"; }
cpvr() { cp -rv "[email protected]"; }
mvrv() { mv -rv "[email protected]"; }
set +a # stop exporting

これは、/etc/profile.d/ が対話型ログイン シェルでのみ使用されるためです。ただし、/etc/bash.bashrc インタラクティブな非ログイン シェルで使用されます。

通常、システムにいくつかのグローバル エイリアスを設定するので、/etc/bashrc.d の作成を開始しました。 いくつかのグローバル エイリアスを含むファイルをドロップできる場所:

    HAVE_BASHRC_D=`cat /etc/bash.bashrc | grep -F '/etc/bashrc.d' | wc -l`

    if [ ! -d /etc/bashrc.d ]; then
            mkdir -p /etc/bashrc.d
    fi
    if [ "$HAVE_BASHRC_D" == "0" ]; then
        echo "Setting up bash aliases"
            (cat <<-'EOF'
                                    if [ -d /etc/bashrc.d ]; then
                                      for i in /etc/bashrc.d/*.sh; do
                                        if [ -r $i ]; then
                                          . $i
                                        fi
                                      done
                                      unset i
                                    fi
                            EOF
            ) >> /etc/bash.bashrc

    fi

Linux
  1. UNIX / Linux プロセス:C fork() 関数

  2. Bashで特定のタイムアウト後に子プロセスを強制終了する方法は?

  3. 子プロセスが親の SIGINT を受け取る

  1. 親プロセスから子プロセスを取得する方法

  2. prctl PR_SET_NAME を使用してプロセスまたはスレッドの名前を設定しますか?

  3. 既存の vim プロセスを再開できますか?

  1. Linux – Linuxでプロセスのプロセッサ親和性を設定するにはどうすればよいですか?

  2. プロセスがMacOsXを実行しているかどうかを確認してから、コードを実行しますか?

  3. サブシェルの出力をプロセスにリダイレクトしますか?