How to export variables from a file?
Clash Royale CLAN TAG#URR8PPP
up vote
43
down vote
favorite
I have a tmp.txt
file containing variables to be exported, for example:
a=123
b="hello world"
c="one more variable"
How can I export all these variables using the export
command, so that they can later be used by child processes?
bash
add a comment |
up vote
43
down vote
favorite
I have a tmp.txt
file containing variables to be exported, for example:
a=123
b="hello world"
c="one more variable"
How can I export all these variables using the export
command, so that they can later be used by child processes?
bash
bash --init-file somefile.blah -c "command"
– Dillian Murphey
Apr 14 '16 at 22:33
add a comment |
up vote
43
down vote
favorite
up vote
43
down vote
favorite
I have a tmp.txt
file containing variables to be exported, for example:
a=123
b="hello world"
c="one more variable"
How can I export all these variables using the export
command, so that they can later be used by child processes?
bash
I have a tmp.txt
file containing variables to be exported, for example:
a=123
b="hello world"
c="one more variable"
How can I export all these variables using the export
command, so that they can later be used by child processes?
bash
bash
edited Mar 20 at 8:48
Marco Bonelli
23512
23512
asked Jun 11 '13 at 20:17
Neerav
485267
485267
bash --init-file somefile.blah -c "command"
– Dillian Murphey
Apr 14 '16 at 22:33
add a comment |
bash --init-file somefile.blah -c "command"
– Dillian Murphey
Apr 14 '16 at 22:33
bash --init-file somefile.blah -c "command"
– Dillian Murphey
Apr 14 '16 at 22:33
bash --init-file somefile.blah -c "command"
– Dillian Murphey
Apr 14 '16 at 22:33
add a comment |
2 Answers
2
active
oldest
votes
up vote
48
down vote
accepted
source tmp.txt
export a b c
./child ...
Judging by your other question, you don't want to hardcode the variable names:
source tmp.txt
export $(cut -d= -f1 tmp.txt)
test it:
$ source tmp.txt
$ echo "$a $b $c"
123 hello world one more variable
$ perl -E 'say "@ENVqw(a b c)"'
$ export $(cut -d= -f1 tmp.txt)
$ perl -E 'say "@ENVqw(a b c)"'
123 hello world one more variable
2
This won't work if the environment file contains comments, for example. (eg. files that can be reused by systemd's EnvironmentFile)
– Chris Lamb
Nov 12 '17 at 22:36
@ChrisLamb you can usegrep
to skip comments:export $(grep --regexp ^[A-Z] tmp.txt | cut -d= -f1)
– gvee
Jul 2 at 16:05
add a comment |
up vote
118
down vote
set -a
. ./tmp.txt
set +a
set -a
causes variables¹ defined from now on to be automatically exported. It's available in any Bourne-like shell. .
is the standard and Bourne name for the source
command so I prefer it for portability (source
comes from csh
and is now available in most modern Bourne-like shells including bash
though (sometimes with a slightly different behaviour)).
In POSIX shells, you can also use set -o allexport
as a more descriptive alternative way to write it (set +o allexport
to unset).
¹ In bash
, be aware that, while allexport
is on, all functions that have been declared (which are also variables) will also be exported to the environment (as BASH_FUNC_myfunction%%
environment variables that are then imported by all bash
shells run in that environment, even when running as sh
).
9
You could also doset +a
afterwards to turn it back off
– Daniel Worthington-Bodart
Sep 11 '15 at 14:18
5
I hope it goes without saying that this tools-based approach is superior to the "chosen" programmatic approach
– Douglas Held
Oct 5 '15 at 13:16
@DanielWorthington-Bodart, good point. Included.
– Stéphane Chazelas
Jun 23 '16 at 16:05
2
This answer should definitely be marked as correct. Thanks for providing this!
– Anson MacKeracher
Feb 8 '17 at 15:10
add a comment |
Your Answer
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "106"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f79064%2fhow-to-export-variables-from-a-file%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
48
down vote
accepted
source tmp.txt
export a b c
./child ...
Judging by your other question, you don't want to hardcode the variable names:
source tmp.txt
export $(cut -d= -f1 tmp.txt)
test it:
$ source tmp.txt
$ echo "$a $b $c"
123 hello world one more variable
$ perl -E 'say "@ENVqw(a b c)"'
$ export $(cut -d= -f1 tmp.txt)
$ perl -E 'say "@ENVqw(a b c)"'
123 hello world one more variable
2
This won't work if the environment file contains comments, for example. (eg. files that can be reused by systemd's EnvironmentFile)
– Chris Lamb
Nov 12 '17 at 22:36
@ChrisLamb you can usegrep
to skip comments:export $(grep --regexp ^[A-Z] tmp.txt | cut -d= -f1)
– gvee
Jul 2 at 16:05
add a comment |
up vote
48
down vote
accepted
source tmp.txt
export a b c
./child ...
Judging by your other question, you don't want to hardcode the variable names:
source tmp.txt
export $(cut -d= -f1 tmp.txt)
test it:
$ source tmp.txt
$ echo "$a $b $c"
123 hello world one more variable
$ perl -E 'say "@ENVqw(a b c)"'
$ export $(cut -d= -f1 tmp.txt)
$ perl -E 'say "@ENVqw(a b c)"'
123 hello world one more variable
2
This won't work if the environment file contains comments, for example. (eg. files that can be reused by systemd's EnvironmentFile)
– Chris Lamb
Nov 12 '17 at 22:36
@ChrisLamb you can usegrep
to skip comments:export $(grep --regexp ^[A-Z] tmp.txt | cut -d= -f1)
– gvee
Jul 2 at 16:05
add a comment |
up vote
48
down vote
accepted
up vote
48
down vote
accepted
source tmp.txt
export a b c
./child ...
Judging by your other question, you don't want to hardcode the variable names:
source tmp.txt
export $(cut -d= -f1 tmp.txt)
test it:
$ source tmp.txt
$ echo "$a $b $c"
123 hello world one more variable
$ perl -E 'say "@ENVqw(a b c)"'
$ export $(cut -d= -f1 tmp.txt)
$ perl -E 'say "@ENVqw(a b c)"'
123 hello world one more variable
source tmp.txt
export a b c
./child ...
Judging by your other question, you don't want to hardcode the variable names:
source tmp.txt
export $(cut -d= -f1 tmp.txt)
test it:
$ source tmp.txt
$ echo "$a $b $c"
123 hello world one more variable
$ perl -E 'say "@ENVqw(a b c)"'
$ export $(cut -d= -f1 tmp.txt)
$ perl -E 'say "@ENVqw(a b c)"'
123 hello world one more variable
edited Jun 11 '13 at 20:55
answered Jun 11 '13 at 20:21
glenn jackman
50.1k569106
50.1k569106
2
This won't work if the environment file contains comments, for example. (eg. files that can be reused by systemd's EnvironmentFile)
– Chris Lamb
Nov 12 '17 at 22:36
@ChrisLamb you can usegrep
to skip comments:export $(grep --regexp ^[A-Z] tmp.txt | cut -d= -f1)
– gvee
Jul 2 at 16:05
add a comment |
2
This won't work if the environment file contains comments, for example. (eg. files that can be reused by systemd's EnvironmentFile)
– Chris Lamb
Nov 12 '17 at 22:36
@ChrisLamb you can usegrep
to skip comments:export $(grep --regexp ^[A-Z] tmp.txt | cut -d= -f1)
– gvee
Jul 2 at 16:05
2
2
This won't work if the environment file contains comments, for example. (eg. files that can be reused by systemd's EnvironmentFile)
– Chris Lamb
Nov 12 '17 at 22:36
This won't work if the environment file contains comments, for example. (eg. files that can be reused by systemd's EnvironmentFile)
– Chris Lamb
Nov 12 '17 at 22:36
@ChrisLamb you can use
grep
to skip comments: export $(grep --regexp ^[A-Z] tmp.txt | cut -d= -f1)
– gvee
Jul 2 at 16:05
@ChrisLamb you can use
grep
to skip comments: export $(grep --regexp ^[A-Z] tmp.txt | cut -d= -f1)
– gvee
Jul 2 at 16:05
add a comment |
up vote
118
down vote
set -a
. ./tmp.txt
set +a
set -a
causes variables¹ defined from now on to be automatically exported. It's available in any Bourne-like shell. .
is the standard and Bourne name for the source
command so I prefer it for portability (source
comes from csh
and is now available in most modern Bourne-like shells including bash
though (sometimes with a slightly different behaviour)).
In POSIX shells, you can also use set -o allexport
as a more descriptive alternative way to write it (set +o allexport
to unset).
¹ In bash
, be aware that, while allexport
is on, all functions that have been declared (which are also variables) will also be exported to the environment (as BASH_FUNC_myfunction%%
environment variables that are then imported by all bash
shells run in that environment, even when running as sh
).
9
You could also doset +a
afterwards to turn it back off
– Daniel Worthington-Bodart
Sep 11 '15 at 14:18
5
I hope it goes without saying that this tools-based approach is superior to the "chosen" programmatic approach
– Douglas Held
Oct 5 '15 at 13:16
@DanielWorthington-Bodart, good point. Included.
– Stéphane Chazelas
Jun 23 '16 at 16:05
2
This answer should definitely be marked as correct. Thanks for providing this!
– Anson MacKeracher
Feb 8 '17 at 15:10
add a comment |
up vote
118
down vote
set -a
. ./tmp.txt
set +a
set -a
causes variables¹ defined from now on to be automatically exported. It's available in any Bourne-like shell. .
is the standard and Bourne name for the source
command so I prefer it for portability (source
comes from csh
and is now available in most modern Bourne-like shells including bash
though (sometimes with a slightly different behaviour)).
In POSIX shells, you can also use set -o allexport
as a more descriptive alternative way to write it (set +o allexport
to unset).
¹ In bash
, be aware that, while allexport
is on, all functions that have been declared (which are also variables) will also be exported to the environment (as BASH_FUNC_myfunction%%
environment variables that are then imported by all bash
shells run in that environment, even when running as sh
).
9
You could also doset +a
afterwards to turn it back off
– Daniel Worthington-Bodart
Sep 11 '15 at 14:18
5
I hope it goes without saying that this tools-based approach is superior to the "chosen" programmatic approach
– Douglas Held
Oct 5 '15 at 13:16
@DanielWorthington-Bodart, good point. Included.
– Stéphane Chazelas
Jun 23 '16 at 16:05
2
This answer should definitely be marked as correct. Thanks for providing this!
– Anson MacKeracher
Feb 8 '17 at 15:10
add a comment |
up vote
118
down vote
up vote
118
down vote
set -a
. ./tmp.txt
set +a
set -a
causes variables¹ defined from now on to be automatically exported. It's available in any Bourne-like shell. .
is the standard and Bourne name for the source
command so I prefer it for portability (source
comes from csh
and is now available in most modern Bourne-like shells including bash
though (sometimes with a slightly different behaviour)).
In POSIX shells, you can also use set -o allexport
as a more descriptive alternative way to write it (set +o allexport
to unset).
¹ In bash
, be aware that, while allexport
is on, all functions that have been declared (which are also variables) will also be exported to the environment (as BASH_FUNC_myfunction%%
environment variables that are then imported by all bash
shells run in that environment, even when running as sh
).
set -a
. ./tmp.txt
set +a
set -a
causes variables¹ defined from now on to be automatically exported. It's available in any Bourne-like shell. .
is the standard and Bourne name for the source
command so I prefer it for portability (source
comes from csh
and is now available in most modern Bourne-like shells including bash
though (sometimes with a slightly different behaviour)).
In POSIX shells, you can also use set -o allexport
as a more descriptive alternative way to write it (set +o allexport
to unset).
¹ In bash
, be aware that, while allexport
is on, all functions that have been declared (which are also variables) will also be exported to the environment (as BASH_FUNC_myfunction%%
environment variables that are then imported by all bash
shells run in that environment, even when running as sh
).
edited Dec 9 at 3:15
Jamieson Becker
1626
1626
answered Jun 11 '13 at 21:13
Stéphane Chazelas
298k54562910
298k54562910
9
You could also doset +a
afterwards to turn it back off
– Daniel Worthington-Bodart
Sep 11 '15 at 14:18
5
I hope it goes without saying that this tools-based approach is superior to the "chosen" programmatic approach
– Douglas Held
Oct 5 '15 at 13:16
@DanielWorthington-Bodart, good point. Included.
– Stéphane Chazelas
Jun 23 '16 at 16:05
2
This answer should definitely be marked as correct. Thanks for providing this!
– Anson MacKeracher
Feb 8 '17 at 15:10
add a comment |
9
You could also doset +a
afterwards to turn it back off
– Daniel Worthington-Bodart
Sep 11 '15 at 14:18
5
I hope it goes without saying that this tools-based approach is superior to the "chosen" programmatic approach
– Douglas Held
Oct 5 '15 at 13:16
@DanielWorthington-Bodart, good point. Included.
– Stéphane Chazelas
Jun 23 '16 at 16:05
2
This answer should definitely be marked as correct. Thanks for providing this!
– Anson MacKeracher
Feb 8 '17 at 15:10
9
9
You could also do
set +a
afterwards to turn it back off– Daniel Worthington-Bodart
Sep 11 '15 at 14:18
You could also do
set +a
afterwards to turn it back off– Daniel Worthington-Bodart
Sep 11 '15 at 14:18
5
5
I hope it goes without saying that this tools-based approach is superior to the "chosen" programmatic approach
– Douglas Held
Oct 5 '15 at 13:16
I hope it goes without saying that this tools-based approach is superior to the "chosen" programmatic approach
– Douglas Held
Oct 5 '15 at 13:16
@DanielWorthington-Bodart, good point. Included.
– Stéphane Chazelas
Jun 23 '16 at 16:05
@DanielWorthington-Bodart, good point. Included.
– Stéphane Chazelas
Jun 23 '16 at 16:05
2
2
This answer should definitely be marked as correct. Thanks for providing this!
– Anson MacKeracher
Feb 8 '17 at 15:10
This answer should definitely be marked as correct. Thanks for providing this!
– Anson MacKeracher
Feb 8 '17 at 15:10
add a comment |
Thanks for contributing an answer to Unix & Linux Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f79064%2fhow-to-export-variables-from-a-file%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
bash --init-file somefile.blah -c "command"
– Dillian Murphey
Apr 14 '16 at 22:33