03-02-2011
Appending a path in user's PATH variable
Hello Folks,
I want to append a path in user's PATH variable which should be available in current session.
Background
Numerous persons will run a utility.
Aim is to add the absolute path of the utility the first time it runs so that next runs have the PATH in env & users can directly run the utility without giving the absolute path.
Appended PATH should exist in the user's current session.
Where i got stuck
Shell scripts run as a separate process, hence, variables set there won't be accessible to parent shell.
We can use "." or "source" for the same.
These constructs are different for different shells.
Since the users are quite big chances of them running different shells is quite high.
This fails my run with . or source.
How to determine user's shell
echo $SHELL
This gives the developers shell. I changed my shell to different but the SHELL variable still gives the older shell value.
Hence, unable to determine the shell as well.
Please let me know how to achieve this.
Thanks in advance
10 More Discussions You Might Find Interesting
1. Shell Programming and Scripting
Hi:
I have a requirement as below:
I have some standard Unix commands modified and kept them in a directory say /usr/clsh/bin. For example I have a script named "ls" kept here which is modified version of "ls" (say it always gives long listing i.e. ls -l).
When any user logs on and types... (2 Replies)
Discussion started by: ramesh_samane
2 Replies
2. Shell Programming and Scripting
Hi
I need a script which will remove a path from PATH environment variable. For example
$echo PATH
/usr/local/bin:/usr/bin:test/rmve:/usr/games
$echo rmv
test/rmve
Here I need a shell script which will remove rmv path (test/rmve) from PATH... (9 Replies)
Discussion started by: madhu84
9 Replies
3. Shell Programming and Scripting
Hi,
Could anyone help me in writing a single line code by either using (sed, awk, perl or whatever) to extract a specific path from the PATH environment variable?
for eg: suppose the PATH is being set as follows
PATH=/usr/bin/:/usr/local/bin:/bin:/usr/sbin:/usr/bin/java:/usr/bin/perl3.4
... (2 Replies)
Discussion started by: royalibrahim
2 Replies
4. Shell Programming and Scripting
I have a script in which i want to print absolute path of the same script irrespective of path from where i run script.
I am using
test.sh:
echo "pwd : `pwd`"
echo "script name: $0"
echo "dirname: `dirname $0`"
when i run script from /my/test/dir/struct as ../test.sh the output i... (10 Replies)
Discussion started by: rss67
10 Replies
5. Shell Programming and Scripting
Hi I'm trying to select text between two lines, I'm using sed to to this, but I need to pass variables to it. For example
start="BEGIN /home/mavkoup/data"
end="END"
sed -n -e '/${start}/,/${end}/g' doesn't work. I've tried double quotes as well. I think there's a problem with the / in the... (4 Replies)
Discussion started by: mavkoup
4 Replies
6. Shell Programming and Scripting
Hi All,
Can you please provide some pointers to move files from Base path to multiple paths in efficient way.Folder Structure is already created.
/Path/AdminUser/User1/1111/Reports/aaa.txt to /Path/User1/1111/Reports/aaa.txt
/Path/AdminUser/User1/2222/Reports/bbb.txt to... (6 Replies)
Discussion started by: karthikgv417
6 Replies
7. Shell Programming and Scripting
Hi experts,
I have multiple file names ending with .jsp located in $SOME_DIR, $SOME_DIR/f1/,$SOME_DIR/f2/test,$SOME_DIR/f3/fa
and there are equivalent class files in $SOME_DIR/WEB-INF/classes/_pages,$SOME_DIR/WEB-INF/classes/_pages/_f1,... (0 Replies)
Discussion started by: oraclermanpt
0 Replies
8. UNIX for Advanced & Expert Users
Currently I am using this laborious command
lvdisplay | awk '/LV Path/ {p=$3} /LV Name/ {n=$3} /VG Name/ {v=$3} /Block device/ {d=$3; sub(".*:", "/dev/dm-", d); printf "%s\t%s\t%s\n", p, "/dev/mapper/"v"-"n, d}'
Would like to know if there is any shorter method to get this mapping of... (2 Replies)
Discussion started by: royalibrahim
2 Replies
9. UNIX for Beginners Questions & Answers
Hello,
I am creating a file with all the source folders included in my git branch, when i grep for the used source, i found source included as relative path instead of absolute path, how can convert relative path to absolute path without changing directory to that folder and using readlink -f ? ... (4 Replies)
Discussion started by: Sekhar419
4 Replies
10. Programming
i have make file which i try to make them generic
but it keeps to compline it missing include directory
this is the makefile :
CXX=g++
CPPFAGS= -Wall -O0 -g -std=c++14
INCLUDES = -I/home/vagrant/libuv/include -Isrc
LIBS_DIRS = -L/home/vagrant/libuv/build
LDFLAGS=... (7 Replies)
Discussion started by: umen
7 Replies
LEARN ABOUT PLAN9
runuser
RUNUSER(1) User Commands RUNUSER(1)
NAME
runuser - run a command with substitute user and group ID
SYNOPSIS
runuser [options] -u user [[--] command [argument...]]
runuser [options] [-] [user [argument...]]
DESCRIPTION
runuser allows to run commands with a substitute user and group ID. If the option -u is not given, it falls back to su-compatible seman-
tics and a shell is executed. The difference between the commands runuser and su is that runuser does not ask for a password (because it
may be executed by the root user only) and it uses a different PAM configuration. The command runuser does not have to be installed with
set-user-ID permissions.
If the PAM session is not required then recommended solution is to use setpriv(1) command.
When called without arguments, runuser defaults to running an interactive shell as root.
For backward compatibility, runuser defaults to not change the current directory and to only set the environment variables HOME and SHELL
(plus USER and LOGNAME if the target user is not root). This version of runuser uses PAM for session management.
OPTIONS
-c, --command=command
Pass command to the shell with the -c option.
-f, --fast
Pass -f to the shell, which may or may not be useful depending on the shell.
-g, --group=group
The primary group to be used. This option is allowed for the root user only.
-G, --supp-group=group
Specify a supplemental group. This option is available to the root user only. The first specified supplementary group is also used
as a primary group if the option --group is unspecified.
-, -l, --login
Start the shell as a login shell with an environment similar to a real login:
o clears all the environment variables except for TERM
o initializes the environment variables HOME, SHELL, USER, LOGNAME, PATH
o changes to the target user's home directory
o sets argv[0] of the shell to '-' in order to make the shell a login shell
-m, -p, --preserve-environment
Preserve the entire environment, i.e. it does not set HOME, SHELL, USER nor LOGNAME. The option is ignored if the option --login is
specified.
-s, --shell=shell
Run the specified shell instead of the default. The shell to run is selected according to the following rules, in order:
o the shell specified with --shell
o the shell specified in the environment variable SHELL if the --preserve-environment option is used
o the shell listed in the passwd entry of the target user
o /bin/sh
If the target user has a restricted shell (i.e. not listed in /etc/shells) the --shell option and the SHELL environment variables
are ignored unless the calling user is root.
--session-command=command
Same as -c , but do not create a new session. (Discouraged.)
-V, --version
Display version information and exit.
-h, --help
Display help text and exit.
CONFIG FILES
runuser reads the /etc/default/runuser and /etc/login.defs configuration files. The following configuration items are relevant for
runuser:
ENV_PATH (string)
Defines the PATH environment variable for a regular user. The default value is /usr/local/bin:/bin:/usr/bin.
ENV_ROOTPATH (string)
ENV_SUPATH (string)
Defines the PATH environment variable for root. The default value is /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin.
ALWAYS_SET_PATH (boolean)
If set to yes and --login and --preserve-environment were not specified runuser initializes PATH.
EXIT STATUS
runuser normally returns the exit status of the command it executed. If the command was killed by a signal, runuser returns the number of
the signal plus 128.
Exit status generated by runuser itself:
1 Generic error before executing the requested command
126 The requested command could not be executed
127 The requested command was not found
FILES
/etc/pam.d/runuser
default PAM configuration file
/etc/pam.d/runuser-l
PAM configuration file if --login is specified
/etc/default/runuser
runuser specific logindef config file
/etc/login.defs global logindef config file
SEE ALSO
setpriv(1), su(1), login.defs(5), shells(5), pam(8)
HISTORY
This runuser command was derived from coreutils' su, which was based on an implementation by David MacKenzie, and the Fedora runuser com-
mand by Dan Walsh.
AVAILABILITY
The runuser command is part of the util-linux package and is available from Linux Kernel Archive <https://www.kernel.org/pub/linux/utils
/util-linux/>.
util-linux July 2014 RUNUSER(1)