複数行で環境変数でbashエイリアスまたは関数を使用する

複数行で環境変数でbashエイリアスまたは関数を使用する

私のbash_profileに現在、次のように非常に長い短いエイリアスがあります。

alias staging_server='MY_ENV1="http://example.com" MY_ENV2="http://example2.com" MY_ENV3="http://example3.com" MY_ENV4="http://example4.com" start_server -p 1234'

より明確にするために、関数や別名を使用して改行文字から分離する方法はありますか?このようなもの(動作しないようです)?

alias staging_server=' \
  MY_ENV1="http://example.com" \
  MY_ENV2="http://example2.com" \
  MY_ENV3="http://example3.com" \
  MY_ENV4="http://example4.com" \
  start_server -p 1234
'

デフォルトとして使用したくないので、エクスポートするのを避けたいです。

ベストアンサー1

気づく出口たとえば、サブシェルでこれを行うと、残りのシェルセッションに影響を与えずに機能します。

staging_server() ( # <-- note the ( instead of { here.
  set -o allexport
  MY_ENV1="http://example.com"
  MY_ENV2="http://example2.com"
  MY_ENV3="http://example3.com"
  MY_ENV4="http://example4.com"
  exec start_server -p 1234 "$@"
)

これは追加のフォークが必要であるという意味ではなく、以前にフォークを実行しました。

追加のフォークが必要であることを意味する唯一のケースは、組み込みstart_serverシェルを使用する場合です(この場合、暗黙的に実行されないため、bashこれを要求するシェルの1つなどの一部のシェルでは)。execexecいいえこのシェルの組み込みを呼び出します。)

おすすめ記事