내 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
이를 요구하는 쉘 중 하나 와 같은 일부 쉘에서는) .exec
exec
아니요이 쉘 내장을 호출하십시오).
답변2
별칭은 실제로 나에게 적합한 것 같습니다(백슬래시 뒤에 공백이 없는 경우). 그러나 이 기능은 더 좋을 수 있으며 최소한 작은따옴표를 사용하는 것을 더 쉽게 만들 수 있습니다.
staging_server() {
MY_ENV1='http://example.com' \
MY_ENV2="..." \
start_server -p 1234 "$@"
}
답변3
당신이 필요하다면환경env
변수에는 다음 명령을 사용할 수 있습니다 .
alias staging_server='env \
MY_ENV1="http://example.com" \
MY_ENV2="http://example2.com" \
MY_ENV3="http://example3.com" \
MY_ENV4="http://example4.com" \
start_server -p 1234
'