0

Why does this work (as root):

$su - aba ~> echo $JAVA_HOME 

Ausgabe: /usr/java/jdk1.7.0_45

And not this shell script (also run as root):

#!/bin/bash su - aba << EOF echo $JAVA_HOME > tmp EOF 

Output:

$more tmp $ 

Question: How can I make this work? Or better: My goal is to execute some commands as another user and also use this enviroment of this user and maybe even change his enviroment (only temporary).

EDIT In the meantime I succeeded with runuser - aba -c 'echo JAVA_HOME', altough it's not in all aspects what wished for, because I still can only transfer one command-line.

1 Answer 1

1

su - aba

is short for

su --login ada

which doesn't make sense inside a script. Since you don't have a terminal once it is run it goes back to the previous user (root).

try

su -c "echo $JAVA_HOME" ada

but even this won't run the users .profile or .bashrc.

However you are root and you should be able to parse those files for the proper settings.

eg.

TEMP_JAVA=$(grep JAVA_HOME /home/$USER/.bashrc)
JAVA_HOME=${TEMP_JAVA##*=} echo $JAVA_HOME

3
  • Ok, grep is a good idea. I can work with that. In the meantime I also succeeded with runuser - aba -c command. Commented Apr 14, 2014 at 14:27
  • I would vote you up, but I'm a newbie here and and not allowed to ;-) Commented Apr 14, 2014 at 14:32
  • Find some Java stuff and answer. I was doing the same with bash stuff. Already made upvote stage, have reached comments on Unix&Linux. Commented Apr 17, 2014 at 0:18

You must log in to answer this question.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.