私の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つなどの一部のシェルでは)。exec
exec
いいえこのシェルの組み込みを呼び出します。)