我的 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'
Run Code Online (Sandbox Code Playgroud)
有没有办法使用函数或别名将其与换行符分开以使其更清晰?像这样的东西(似乎不起作用)?
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
'
Run Code Online (Sandbox Code Playgroud)
我想避免导出这些,因为我不希望它们作为默认值。
Sté*_*las 13
请注意,如果您在子 shell中执行导出操作,则导出会很好(不会影响 shell 会话的其余部分),例如:
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 "$@"
)
Run Code Online (Sandbox Code Playgroud)
请注意,这并不意味着额外的分叉,我们只是在这里早些时候进行分叉。
其中,这将意味着额外的叉的唯一情况是,如果你使用代替shell内建start_server有(在这种情况下,像一些炮弹bash(其中,这些炮弹的一个exec需要,因为它不是隐含完成),使用exec将不会调用shell 内置)。
别名实际上似乎对我有用(前提是反斜杠后没有空格)。但是函数可能更好,至少可以更容易地使用单引号:
staging_server() {
MY_ENV1='http://example.com' \
MY_ENV2="..." \
start_server -p 1234 "$@"
}
Run Code Online (Sandbox Code Playgroud)