Help: run with another user, env disappear


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Help: run with another user, env disappear
# 1  
Old 04-22-2016
Help: run with another user, env disappear

Code:
#!/bin/sh
PATH_1=$PATH
echo "PATH_1 is " $PATH_1
function user_func (){
  whoami
  export PATH=$PATH_1:/usr/local/bin
  echo "PATH is" $PATH
  exit
}
export -f user_func
su -m hadoop -c 'user_func'

from out put, PATH is not set with PATH_1 append ( it's not another user to run the script, it's the user "hadoop" inside the script to run the function 'user_func' )
Code:
PATH_1 is  /usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin
hadoop
PATH is /bin:/usr/bin


Last edited by yanglei_fage; 04-22-2016 at 10:08 PM..
# 2  
Old 04-22-2016
I believe that if you add echo for testing:

Code:
function user_func (){
  whoami
  echo "PATH_1 = :$PATH_1:"
  export PATH=$PATH_1:/usr/local/bin
  echo "PATH is" $PATH
  exit
}

You will see that PATH_1 is not in scope in the function. This is my guess - I do not know much about your environment like OS and shell, or what the other user's .profile or .bashrc may have in it.
# 3  
Old 04-22-2016
Quote:
Originally Posted by jim mcnamara
I believe that if you add echo for testing:

Code:
function user_func (){
  whoami
  echo "PATH_1 = :$PATH_1:"
  export PATH=$PATH_1:/usr/local/bin
  echo "PATH is" $PATH
  exit
}

You will see that PATH_1 is not in scope in the function. This is my guess - I do not know much about your environment like OS and shell, or what the other user's .profile or .bashrc may have in it.

nothing special in my .profile or bashrc, I'm using ubuntu
# 4  
Old 04-22-2016
That is not what I am saying. You indicated:
1.another user had trouble running the script
2. PATH_1 was apparently not showing up in the output as expected

Answer:
When run by another user the PATH_1 variable was not in scope inside the function.

Has nothing to do with your personal profile settings

What I would do and we have set on many machines:

Code:
export PATH=${PATH}:/usr/local/bin

No functions required.
# 5  
Old 04-22-2016
Quote:
Originally Posted by jim mcnamara
That is not what I am saying. You indicated:
1.another user had trouble running the script
2. PATH_1 was apparently not showing up in the output as expected

Answer:
When run by another user the PATH_1 variable was not in scope inside the function.

Has nothing to do with your personal profile settings

What I would do and we have set on many machines:

Code:
export PATH=${PATH}:/usr/local/bin

No functions required.
there is misunderstanding here
it's not antoher user to run the script, it's another user to run the function
you can check my code "su -m hadoop -c 'user_func' ", hadoop is another user that I mentioned
# 6  
Old 04-23-2016
Okay.
PATH_1 is not being translated as anything, as presented, it is NOT defined in the function because it is not in scope inside the function. I would guess it needs to be exported.

Last edited by jim mcnamara; 04-23-2016 at 12:52 AM..
Login or Register to Ask a Question

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

Set env variables for user

Hi , I have installed oracle in Solaris machine and unable to set the env variable. I tried to put the env variable in .dtprofile file but didn't help. So everytime I login in need to run the command and export the variable. Kindly suggest where I am doing wrong.Pls excuse as I am not too... (2 Replies)
Discussion started by: Rossdba
2 Replies

2. Shell Programming and Scripting

Using env variables to run a program

Hi there, I need urgent help with a small program that is run via shell script. Unfortunately I only understand the bare basics of shell scripting and can't figure out how to do this. We have a program that tests the connection between 3 servers. I have a script that lets the program run on... (15 Replies)
Discussion started by: Pherdinand
15 Replies

3. Shell Programming and Scripting

User switching without carrying over LC_CTYPE env variable

I am using Solaris8, userA's shell '/usr/ace/prog/sdshell', AppuserB's shell '/bin/ksh'. serverT:/home/userA>LC_CTYPE=iso_8859_1; export LC_CTYPE; vtemp='userA variable'; export vtemp serverT:/home/userA>echo "LC_CTYPE=$LC_CTYPE, vtemp=$vtemp"; LC_CTYPE=iso_8859_1, vtemp=userA... (4 Replies)
Discussion started by: kchinnam
4 Replies

4. Shell Programming and Scripting

Need to run Oracle stored procedure from UNIX env

Hi Everyone, I want to create a script where i need to run the oracle stored procedure from unix script and get the output(sequence number ) into a variable which i will pass in my datastage job. Below is my stored procedure:- DECLARE P_TRANSTYPE VARCHAR2(20); ... (4 Replies)
Discussion started by: prasson_ibm
4 Replies

5. Shell Programming and Scripting

How to invoke user env. on remote server

I am tryying to ssh remote machine from a script to run a program for a particular user but it is not bringing up the user environment on remote machine. I was wondering if some one tells me what is the command I should put in the script which will invoke user env on the remote server before ssh is... (2 Replies)
Discussion started by: sam101
2 Replies

6. Shell Programming and Scripting

Manipulating env variables for user apache?

So that they can be used in a cgi script? How best to do this? Thanks ---------- Post updated at 06:24 PM ---------- Previous update was at 02:38 AM ---------- Anyone that can help me with this? Basically I want to add an environment variable that will be visible to the cgi scripts when I... (0 Replies)
Discussion started by: stevenswj
0 Replies

7. Shell Programming and Scripting

How to run cmds after changing to a new env (shell) in a shell script

Hi, I am using HP-UNIX. I have a requirement as below I have to change env twice like: cadenv <env> cadenv <env> ccm start -d /dbpath ccm tar -xvf *.tar ccm rcv .... mv *.tar BACKUP but after I do the first cadenv <env> , I am unable to execute any of the later commands . ... (6 Replies)
Discussion started by: charlei
6 Replies

8. HP-UX

How to use own account env variables to cron user

hi all, i have one account for unix Tru64. i can login this account and i do execute special shell script(login sqlplus, execute another shell, etc... ) on this account on my server. but i can't run this shell from cron tab. i think that become cron user envirnoment variables. (3 Replies)
Discussion started by: Tlg13team
3 Replies

9. Shell Programming and Scripting

Adding command line env in cron env

Hello friends, i run two scripts manually & they work. i run them in cron & they don work. how to match the two env's 1.command line env 2.cron env i would like cron to use command line env. Thanks & Regards Abhijeet (1 Reply)
Discussion started by: abhijeetkul
1 Replies
Login or Register to Ask a Question