R
R
romaro2021-03-02 23:25:25
linux
romaro, 2021-03-02 23:25:25

Is it possible to run a bash script in the current process?

I have a simple script:

#!/bin/bash
export HOSTNAME=ora19c.localdomain
echo $HOSTNAME
HOSTNAME_2=ora19c.localdomain2
echo $HOSTNAME_2


When executed, it produces the expected result:
[[email protected] scripts]# ./ora_var.sh
ora19c.localdomain
ora19c.localdomain2


However, I cannot access any of the script-initiated variables in the current process. As I understand it, this happens because the script is executed by a separate process, and there is no possibility to export the variable to a higher level.

How can I execute a script in the current process, or at least copy a variable into it? Look towards the eval command?

Answer the question

In order to leave comments, you need to log in

[[+comments_count]] answer(s)
R
Ruslan Fedoseev, 2021-03-02
@romaro

man bash
/source
source filename [arguments]
Read and execute commands from filename in the current shell
environment and return the exit status of the last command
executed from filename. If filename does not contain a slash, file
names in PATH are used to find the directory containing filename
. The file searched for in PATH need not be executable.
When bash is not in posix mode, the current directory is
searched if no file is found in PATH. If the sourcepath option
to the shopt builtin command is turned off, the PATH is not
searched. If any arguments are supplied, they become the positional
parameters when filename is executed. Otherwise the
positional parameters are unchanged. The return status is the
status of the last command exited within the script (0 if no
commands are executed), and false if filename is not found or
cannot be read.

J
jcmvbkbc, 2021-03-03
@jcmvbkbc

However, I cannot access any of the script-initiated variables in the current process. As I understand it, this happens because the script is executed by a separate process, and there is no possibility to export the variable to a higher level.

It's not clear what the relationship is between "script" and "current process". Who is launching whom?
If the script starts a process, then the environment variables must be exported, as stated here . If the process runs the script as another process, then no changes to the environment variables made by the script in the process will be visible.

A
Alexey Yarkov, 2021-03-02
@yarkov

export varname=123

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question