FreeBSD Manual Pages
SHELL(1) General Commands Manual SHELL(1) NAME shell - Creates a temporary interactive shell session in a disposable working directory SYNOPSIS shell [-fq] [-d directory] [shell [...]] shell [-fkqS] [-s directory] [shell [...]] shell -v DESCRIPTION The shell utility creates an interactive shell session with a clean environment and with an empty working directory. By specifying a specific shell on the command line, a shell other than the user's login shell may be invoked. If a specific shell is not requested, the SHELL environment variable will be used to infer what shell to start. The basename of the named shell must correspond to a valid login shell and the actual shell that is started will always be taken from the list of valid login shells (by matching the basename of the specified shell, or $SHELL, against the basenames of the allowed login shells). This behaviour may be bypassed by using the -f command line option. Any operands present after the name of the shell will be passed as is to the shell in question. If shell (this utility, not the interactive shell process) receives the USR1 signal, the temporary working directory will not be deleted when the shell session terminates (as if -k had been used from the start). The options are as follows: -d directory Use the specified directory rather than a new temporary directory. This directory will not be deleted when the shell session terminates. This option implies the -k option, and overrides any earlier -s option. -f Force the execution of the given command, even if it is not a valid login shell on the current system. The command needs to be specified with an absolute path. -k Keep the temporary directory around after terminating the shell session. -q Be quiet. Don't output informational messages. -s directory Pre-populate the temporary directory with the contents of the named "skeleton directory". This will copy the whole directory structure rooted in the specified directory to the temporary working directory. This option overrides any earlier -d option. -S Do not pre-populate the temporary directory with the contents of a "skeleton directory", even if the -s option was used earlier on the command line or the SHELL_SKEL environment variable is set. -v Output version information and immediately terminate. ENVIRONMENT shell uses the following environment variables: SHELL Used to determine what shell to start if a specific shell is not specified on the command line. If this variable is unset or empty, then /bin/sh will be used instead. SHELL_SKEL Directory to automatically pre-populate the temporary working directory with. This environment variable is not used if any of the -d or -s options are used on the command line. TMPDIR Directory in which to create the working directory when the -d option is not used. This variable is used by mktemp which will revert to use /tmp if the variable is not set. shell clears the environment of the interactive shell that it starts, but also sets the following environment variables: HOME Set to the working directory where the shell is started. PATH Set to the output of "getconf PATH". PS1 Set to the string `$ ' (dollar-sign and space). Note that some shells ignore this variable if passed from the parent environment. SHELL Set to the absolute path of the real shell executable. This may be different from the shell mentioned on the command line as the actual shell used will be picked from the list of valid login shells (unless -f is used). TERM Carried over from the parent environment. FILES /etc/shells Used as a source for valid login shells on systems where "getent shells" does not work. EXAMPLES Start a new shell in a new temporary directory: $ shell shell: info: Starting /bin/ksh in /tmp/shell-ksh.mJMHFTFE $ exit shell: info: Removing /tmp/shell-ksh.mJMHFTFE Start a new dash shell in a temporary directory: $ shell dash shell: info: Starting /usr/local/bin/dash in /tmp/shell-dash.V7zU6EtZ $ exit shell: info: Removing /tmp/shell-dash.V7zU6EtZ Start a new bash shell in a specific directory: $ shell -d "$HOME/testing" bash shell: info: Starting /usr/local/bin/bash in /home/myself/testing $ exit exit shell: info: Leaving /home/myself/testing in place Start ksh as a login shell and pre-populate the temporary directory with the contents of $HOME/skel. Note, starting the ksh shell as a login shell will in this case make it execute the .profile file copied from $HOME/skel. $ shell -s "$HOME/skel" ksh -l shell: info: Copying /home/myself/skel into /tmp/shell-ksh.ngEwbcpD shell: info: Starting /bin/ksh in /tmp/shell-ksh.ngEwbcpD $ ls -la total 36 drwxr-xr-x 2 myself wheel 512 Apr 15 12:55 . drwxrwxrwt 28 root wheel 512 Apr 21 14:15 .. -rw-r--r-- 1 myself wheel 87 Nov 1 19:14 .Xdefaults -rw-r--r-- 1 myself wheel 771 Feb 9 10:18 .cshrc -rw-r--r-- 1 myself wheel 101 Nov 1 19:14 .cvsrc -rw-r--r-- 1 myself wheel 359 Nov 1 19:14 .login -rw-r--r-- 1 myself wheel 175 Nov 1 19:14 .mailrc -rw-r--r-- 1 myself wheel 215 Feb 9 10:18 .profile -rw-r--r-- 1 myself wheel 108 Apr 15 12:50 .vimrc $ exit shell: info: Removing /tmp/shell-ksh.ngEwbcpD Start a POSIX-ly correct yash shell as another user. $ su testuser -c 'shell yash --posixly-correct' Password: shell: info: Starting /usr/local/bin/yash in /tmp/shell-yash.yrSSGISG $ id uid=1001(testuser) gid=1001(testuser) groups=1001(testuser) $ exit shell: info: Removing /tmp/shell-yash.yrSSGISG SEE ALSO mktemp(1) AUTHORS Andreas Kusalananda Kahari <andreas.kahari@abc.se> CAVEATS For Solaris, the list of valid login shells is taken from the "shells(4)" manual on a vanilla Solaris 11.4 system. This is because Solaris lacks "getent shells" and may also lack the /etc/shells file. The /etc/shells file will still be used if it exists. Unix May 28, 2019 SHELL(1)
NAME | SYNOPSIS | DESCRIPTION | ENVIRONMENT | FILES | EXAMPLES | SEE ALSO | AUTHORS | CAVEATS
Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=shell&sektion=1&manpath=FreeBSD+12.1-RELEASE+and+Ports>