1490834b2SAntonio Huete Jimenez.\" Copyright (c) 1980, 1990, 1993 2490834b2SAntonio Huete Jimenez.\" The Regents of the University of California. All rights reserved. 3490834b2SAntonio Huete Jimenez.\" 4490834b2SAntonio Huete Jimenez.\" This code is derived from software contributed to Berkeley by 5490834b2SAntonio Huete Jimenez.\" the Institute of Electrical and Electronics Engineers, Inc. 6490834b2SAntonio Huete Jimenez.\" Redistribution and use in source and binary forms, with or without 7490834b2SAntonio Huete Jimenez.\" modification, are permitted provided that the following conditions 8490834b2SAntonio Huete Jimenez.\" are met: 9490834b2SAntonio Huete Jimenez.\" 1. Redistributions of source code must retain the above copyright 10490834b2SAntonio Huete Jimenez.\" notice, this list of conditions and the following disclaimer. 11490834b2SAntonio Huete Jimenez.\" 2. Redistributions in binary form must reproduce the above copyright 12490834b2SAntonio Huete Jimenez.\" notice, this list of conditions and the following disclaimer in the 13490834b2SAntonio Huete Jimenez.\" documentation and/or other materials provided with the distribution. 14490834b2SAntonio Huete Jimenez.\" 3. Neither the name of the University nor the names of its contributors 15490834b2SAntonio Huete Jimenez.\" may be used to endorse or promote products derived from this software 16490834b2SAntonio Huete Jimenez.\" without specific prior written permission. 17490834b2SAntonio Huete Jimenez.\" 18490834b2SAntonio Huete Jimenez.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 19490834b2SAntonio Huete Jimenez.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 20490834b2SAntonio Huete Jimenez.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 21490834b2SAntonio Huete Jimenez.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 22490834b2SAntonio Huete Jimenez.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 23490834b2SAntonio Huete Jimenez.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 24490834b2SAntonio Huete Jimenez.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 25490834b2SAntonio Huete Jimenez.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 26490834b2SAntonio Huete Jimenez.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 27490834b2SAntonio Huete Jimenez.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 28490834b2SAntonio Huete Jimenez.\" SUCH DAMAGE. 29490834b2SAntonio Huete Jimenez.\" 30490834b2SAntonio Huete Jimenez.\" From @(#)printenv.1 8.1 (Berkeley) 6/6/93 31*6cd3723eSSascha Wildner.\" From FreeBSD: src/usr.bin/printenv/printenv.1,v 1.17 2002/11/26 17:33:35 ru Exp 32*6cd3723eSSascha Wildner.\" $FreeBSD: head/usr.bin/env/env.1 314436 2017-02-28 23:42:47Z imp $ 33490834b2SAntonio Huete Jimenez.\" 34*6cd3723eSSascha Wildner.Dd August 17, 2019 35490834b2SAntonio Huete Jimenez.Dt ENV 1 36490834b2SAntonio Huete Jimenez.Os 37490834b2SAntonio Huete Jimenez.Sh NAME 38490834b2SAntonio Huete Jimenez.Nm env 39490834b2SAntonio Huete Jimenez.Nd set environment and execute command, or print environment 40490834b2SAntonio Huete Jimenez.Sh SYNOPSIS 41490834b2SAntonio Huete Jimenez.Nm 42490834b2SAntonio Huete Jimenez.Op Fl iv 43490834b2SAntonio Huete Jimenez.Op Fl P Ar altpath 44490834b2SAntonio Huete Jimenez.Op Fl S Ar string 45490834b2SAntonio Huete Jimenez.Op Fl u Ar name 46490834b2SAntonio Huete Jimenez.Op Ar name Ns = Ns Ar value ... 47490834b2SAntonio Huete Jimenez.Op Ar utility Op Ar argument ... 48490834b2SAntonio Huete Jimenez.Sh DESCRIPTION 49490834b2SAntonio Huete JimenezThe 50490834b2SAntonio Huete Jimenez.Nm 51490834b2SAntonio Huete Jimenezutility executes another 52490834b2SAntonio Huete Jimenez.Ar utility 53490834b2SAntonio Huete Jimenezafter modifying the environment as 54490834b2SAntonio Huete Jimenezspecified on the command line. 55490834b2SAntonio Huete JimenezEach 56490834b2SAntonio Huete Jimenez.Ar name Ns = Ns Ar value 57490834b2SAntonio Huete Jimenezoption specifies the setting of an environment variable, 58490834b2SAntonio Huete Jimenez.Ar name , 59490834b2SAntonio Huete Jimenezwith a value of 60490834b2SAntonio Huete Jimenez.Ar value . 61490834b2SAntonio Huete JimenezAll such environment variables are set before the 62490834b2SAntonio Huete Jimenez.Ar utility 63490834b2SAntonio Huete Jimenezis executed. 64490834b2SAntonio Huete Jimenez.Pp 65490834b2SAntonio Huete JimenezThe options are as follows: 66490834b2SAntonio Huete Jimenez.Bl -tag -width indent 67490834b2SAntonio Huete Jimenez.It Fl i 68490834b2SAntonio Huete JimenezExecute the 69490834b2SAntonio Huete Jimenez.Ar utility 70490834b2SAntonio Huete Jimenezwith only those environment variables specified by 71490834b2SAntonio Huete Jimenez.Ar name Ns = Ns Ar value 72490834b2SAntonio Huete Jimenezoptions. 73490834b2SAntonio Huete JimenezThe environment inherited 74490834b2SAntonio Huete Jimenezby 75490834b2SAntonio Huete Jimenez.Nm 76490834b2SAntonio Huete Jimenezis ignored completely. 77490834b2SAntonio Huete Jimenez.\" -P 78490834b2SAntonio Huete Jimenez.It Fl P Ar altpath 79490834b2SAntonio Huete JimenezSearch the set of directories as specified by 80490834b2SAntonio Huete Jimenez.Ar altpath 81490834b2SAntonio Huete Jimenezto locate the specified 82490834b2SAntonio Huete Jimenez.Ar utility 83490834b2SAntonio Huete Jimenezprogram, instead of using the value of the 84490834b2SAntonio Huete Jimenez.Ev PATH 85490834b2SAntonio Huete Jimenezenvironment variable. 86490834b2SAntonio Huete Jimenez.\" -S 87490834b2SAntonio Huete Jimenez.It Fl S Ar string 88490834b2SAntonio Huete JimenezSplit apart the given 89490834b2SAntonio Huete Jimenez.Ar string 90490834b2SAntonio Huete Jimenezinto multiple strings, and process each of the resulting strings 91490834b2SAntonio Huete Jimenezas separate arguments to the 92490834b2SAntonio Huete Jimenez.Nm 93490834b2SAntonio Huete Jimenezutility. 94490834b2SAntonio Huete JimenezThe 95490834b2SAntonio Huete Jimenez.Fl S 96490834b2SAntonio Huete Jimenezoption recognizes some special character escape sequences and 97490834b2SAntonio Huete Jimenezalso supports environment-variable substitution, as described 98490834b2SAntonio Huete Jimenezbelow. 99490834b2SAntonio Huete Jimenez.\" -u 100490834b2SAntonio Huete Jimenez.It Fl u Ar name 101490834b2SAntonio Huete JimenezIf the environment variable 102490834b2SAntonio Huete Jimenez.Ar name 103490834b2SAntonio Huete Jimenezis in the environment, then remove it before processing the 104490834b2SAntonio Huete Jimenezremaining options. 105490834b2SAntonio Huete JimenezThis is similar to the 106490834b2SAntonio Huete Jimenez.Ic unset 107490834b2SAntonio Huete Jimenezcommand in 108490834b2SAntonio Huete Jimenez.Xr sh 1 . 109490834b2SAntonio Huete JimenezThe value for 110490834b2SAntonio Huete Jimenez.Ar name 111490834b2SAntonio Huete Jimenezmust not include the 112490834b2SAntonio Huete Jimenez.Ql = 113490834b2SAntonio Huete Jimenezcharacter. 114490834b2SAntonio Huete Jimenez.\" -v 115490834b2SAntonio Huete Jimenez.It Fl v 116490834b2SAntonio Huete JimenezPrint verbose information for each step of processing done by the 117490834b2SAntonio Huete Jimenez.Nm 118490834b2SAntonio Huete Jimenezutility. 119490834b2SAntonio Huete JimenezAdditional information will be printed if 120490834b2SAntonio Huete Jimenez.Fl v 121490834b2SAntonio Huete Jimenezis specified multiple times. 122490834b2SAntonio Huete Jimenez.El 123490834b2SAntonio Huete Jimenez.Pp 124490834b2SAntonio Huete JimenezThe above options are only recognized when they are specified 125490834b2SAntonio Huete Jimenezbefore any 126490834b2SAntonio Huete Jimenez.Ar name Ns = Ns Ar value 127490834b2SAntonio Huete Jimenezoptions. 128490834b2SAntonio Huete Jimenez.Pp 129490834b2SAntonio Huete JimenezIf no 130490834b2SAntonio Huete Jimenez.Ar utility 131490834b2SAntonio Huete Jimenezis specified, 132490834b2SAntonio Huete Jimenez.Nm 133490834b2SAntonio Huete Jimenezprints out the names and values 134490834b2SAntonio Huete Jimenezof the variables in the environment, with one name/value pair per line. 135490834b2SAntonio Huete Jimenez.\" 136490834b2SAntonio Huete Jimenez.Ss Details of Fl S \&Ss (split-string) processing 137490834b2SAntonio Huete JimenezThe processing of the 138490834b2SAntonio Huete Jimenez.Fl S 139490834b2SAntonio Huete Jimenezoption will split the given 140490834b2SAntonio Huete Jimenez.Ar string 141490834b2SAntonio Huete Jimenezinto separate arguments based on any space or <tab> characters found in the 142490834b2SAntonio Huete Jimenez.Ar string . 143490834b2SAntonio Huete JimenezEach of those new arguments will then be treated as if it had been 144490834b2SAntonio Huete Jimenezspecified as a separate argument on the original 145490834b2SAntonio Huete Jimenez.Nm 146490834b2SAntonio Huete Jimenezcommand. 147490834b2SAntonio Huete Jimenez.Pp 148490834b2SAntonio Huete JimenezSpaces and tabs may be embedded in one of those new arguments by using 149490834b2SAntonio Huete Jimenezsingle 150490834b2SAntonio Huete Jimenez.Pq Dq Li ' 151490834b2SAntonio Huete Jimenezor double 152490834b2SAntonio Huete Jimenez.Pq Ql \&" 153490834b2SAntonio Huete Jimenezquotes, or backslashes 154490834b2SAntonio Huete Jimenez.Pq Ql \e . 155490834b2SAntonio Huete JimenezSingle quotes will escape all non-single quote characters, up to 156490834b2SAntonio Huete Jimenezthe matching single quote. 157490834b2SAntonio Huete JimenezDouble quotes will escape all non-double quote characters, up to 158490834b2SAntonio Huete Jimenezthe matching double quote. 159490834b2SAntonio Huete JimenezIt is an error if the end of the 160490834b2SAntonio Huete Jimenez.Ar string 161490834b2SAntonio Huete Jimenezis reached before the matching quote character. 162490834b2SAntonio Huete Jimenez.Pp 163490834b2SAntonio Huete JimenezIf 164490834b2SAntonio Huete Jimenez.Fl S 165490834b2SAntonio Huete Jimenezwould create a new argument that starts with the 166490834b2SAntonio Huete Jimenez.Ql # 167490834b2SAntonio Huete Jimenezcharacter, then that argument and the remainder of the 168490834b2SAntonio Huete Jimenez.Ar string 169490834b2SAntonio Huete Jimenezwill be ignored. 170490834b2SAntonio Huete JimenezThe 171490834b2SAntonio Huete Jimenez.Ql \e# 172490834b2SAntonio Huete Jimenezsequence can be used when you want a new argument to start 173490834b2SAntonio Huete Jimenezwith a 174490834b2SAntonio Huete Jimenez.Ql # 175490834b2SAntonio Huete Jimenezcharacter, without causing the remainder of the 176490834b2SAntonio Huete Jimenez.Ar string 177490834b2SAntonio Huete Jimenezto be skipped. 178490834b2SAntonio Huete Jimenez.Pp 179490834b2SAntonio Huete JimenezWhile processing the 180490834b2SAntonio Huete Jimenez.Ar string 181490834b2SAntonio Huete Jimenezvalue, 182490834b2SAntonio Huete Jimenez.Fl S 183490834b2SAntonio Huete Jimenezprocessing will treat certain character combinations as escape 184490834b2SAntonio Huete Jimenezsequences which represent some action to take. 185490834b2SAntonio Huete JimenezThe character escape sequences are in backslash notation. 186490834b2SAntonio Huete JimenezThe characters and their meanings are as follows: 187490834b2SAntonio Huete Jimenez.Pp 188490834b2SAntonio Huete Jimenez.Bl -tag -width indent -offset indent -compact 189490834b2SAntonio Huete Jimenez.It Cm \ec 190490834b2SAntonio Huete JimenezIgnore the remaining characters in the 191490834b2SAntonio Huete Jimenez.Ar string . 192490834b2SAntonio Huete JimenezThis must not appear inside a double-quoted string. 193490834b2SAntonio Huete Jimenez.It Cm \ef 194490834b2SAntonio Huete JimenezReplace with a <form-feed> character. 195490834b2SAntonio Huete Jimenez.It Cm \en 196490834b2SAntonio Huete JimenezReplace with a <new-line> character. 197490834b2SAntonio Huete Jimenez.It Cm \er 198490834b2SAntonio Huete JimenezReplace with a <carriage return> character. 199490834b2SAntonio Huete Jimenez.It Cm \et 200490834b2SAntonio Huete JimenezReplace with a <tab> character. 201490834b2SAntonio Huete Jimenez.It Cm \ev 202490834b2SAntonio Huete JimenezReplace with a <vertical tab> character. 203490834b2SAntonio Huete Jimenez.It Cm \e# 204490834b2SAntonio Huete JimenezReplace with a 205490834b2SAntonio Huete Jimenez.Ql # 206490834b2SAntonio Huete Jimenezcharacter. 207490834b2SAntonio Huete JimenezThis would be useful when you need a 208490834b2SAntonio Huete Jimenez.Ql # 209490834b2SAntonio Huete Jimenezas the first character in one of the arguments created 210490834b2SAntonio Huete Jimenezby splitting apart the given 211490834b2SAntonio Huete Jimenez.Ar string . 212490834b2SAntonio Huete Jimenez.It Cm \e$ 213490834b2SAntonio Huete JimenezReplace with a 214490834b2SAntonio Huete Jimenez.Ql $ 215490834b2SAntonio Huete Jimenezcharacter. 216490834b2SAntonio Huete Jimenez.It Cm \e_ 217490834b2SAntonio Huete JimenezIf this is found inside of a double-quoted string, then replace it 218490834b2SAntonio Huete Jimenezwith a single blank. 219490834b2SAntonio Huete JimenezIf this is found outside of a quoted string, then treat this as the 220490834b2SAntonio Huete Jimenezseparator character between new arguments in the original 221490834b2SAntonio Huete Jimenez.Ar string . 222490834b2SAntonio Huete Jimenez.It Cm \e" 223490834b2SAntonio Huete JimenezReplace with a <double quote> character. 224490834b2SAntonio Huete Jimenez.It Cm \e\' 225490834b2SAntonio Huete JimenezReplace with a <single quote> character. 226490834b2SAntonio Huete Jimenez.It Cm \e\e 227490834b2SAntonio Huete JimenezReplace with a backslash character. 228490834b2SAntonio Huete Jimenez.El 229490834b2SAntonio Huete Jimenez.Pp 230490834b2SAntonio Huete JimenezThe sequences for <single-quote> and backslash are the only sequences 231490834b2SAntonio Huete Jimenezwhich are recognized inside of a single-quoted string. 232490834b2SAntonio Huete JimenezThe other sequences have no special meaning inside a single-quoted 233490834b2SAntonio Huete Jimenezstring. 234490834b2SAntonio Huete JimenezAll escape sequences are recognized inside of a double-quoted string. 235490834b2SAntonio Huete JimenezIt is an error if a single 236490834b2SAntonio Huete Jimenez.Ql \e 237490834b2SAntonio Huete Jimenezcharacter is followed by a character other than the ones listed above. 238490834b2SAntonio Huete Jimenez.Pp 239490834b2SAntonio Huete JimenezThe processing of 240490834b2SAntonio Huete Jimenez.Fl S 241490834b2SAntonio Huete Jimenezalso supports substitution of values from environment variables. 242490834b2SAntonio Huete JimenezTo do this, the name of the environment variable must be inside of 243490834b2SAntonio Huete Jimenez.Ql ${} , 244490834b2SAntonio Huete Jimenezsuch as: 245490834b2SAntonio Huete Jimenez.Li ${SOMEVAR} . 246490834b2SAntonio Huete JimenezThe common shell syntax of 247490834b2SAntonio Huete Jimenez.Li $SOMEVAR 248490834b2SAntonio Huete Jimenezis not supported. 249490834b2SAntonio Huete JimenezAll values substituted will be the values of the environment variables 250490834b2SAntonio Huete Jimenezas they were when the 251490834b2SAntonio Huete Jimenez.Nm 252490834b2SAntonio Huete Jimenezutility was originally invoked. 253490834b2SAntonio Huete JimenezThose values will not be checked for any of the escape sequences as 254490834b2SAntonio Huete Jimenezdescribed above. 255490834b2SAntonio Huete JimenezAnd any settings of 256490834b2SAntonio Huete Jimenez.Ar name Ns = Ns Ar value 257490834b2SAntonio Huete Jimenezwill not effect the values used for substitution in 258490834b2SAntonio Huete Jimenez.Fl S 259490834b2SAntonio Huete Jimenezprocessing. 260490834b2SAntonio Huete Jimenez.Pp 261490834b2SAntonio Huete JimenezAlso, 262490834b2SAntonio Huete Jimenez.Fl S 263490834b2SAntonio Huete Jimenezprocessing can not reference the value of the special parameters 264490834b2SAntonio Huete Jimenezwhich are defined by most shells. 265490834b2SAntonio Huete JimenezFor instance, 266490834b2SAntonio Huete Jimenez.Fl S 267490834b2SAntonio Huete Jimenezcan not recognize special parameters such as: 268490834b2SAntonio Huete Jimenez.Ql $* , 269490834b2SAntonio Huete Jimenez.Ql $@ , 270490834b2SAntonio Huete Jimenez.Ql $# , 271490834b2SAntonio Huete Jimenez.Ql $? 272490834b2SAntonio Huete Jimenezor 273490834b2SAntonio Huete Jimenez.Ql $$ 274490834b2SAntonio Huete Jimenezif they appear inside the given 275490834b2SAntonio Huete Jimenez.Ar string . 276490834b2SAntonio Huete Jimenez.\" 277490834b2SAntonio Huete Jimenez.Ss Use in shell-scripts 278490834b2SAntonio Huete JimenezThe 279490834b2SAntonio Huete Jimenez.Nm 280490834b2SAntonio Huete Jimenezutility is often used as the 281490834b2SAntonio Huete Jimenez.Ar interpreter 282490834b2SAntonio Huete Jimenezon the first line of interpreted scripts, as 283490834b2SAntonio Huete Jimenezdescribed in 284490834b2SAntonio Huete Jimenez.Xr execve 2 . 285490834b2SAntonio Huete Jimenez.Pp 286490834b2SAntonio Huete JimenezNote that the way the kernel parses the 287490834b2SAntonio Huete Jimenez.Ql #! 288490834b2SAntonio Huete Jimenez(first line) of an interpreted script has changed as of 289490834b2SAntonio Huete Jimenez.Fx 6.0 . 290490834b2SAntonio Huete JimenezPrior to that, the 291490834b2SAntonio Huete Jimenez.Fx 292490834b2SAntonio Huete Jimenezkernel would split that first line into separate arguments based 293490834b2SAntonio Huete Jimenezon any whitespace (space or <tab> characters) found in the line. 294490834b2SAntonio Huete JimenezSo, if a script named 295490834b2SAntonio Huete Jimenez.Pa /usr/local/bin/someport 296490834b2SAntonio Huete Jimenezhad a first line of: 297490834b2SAntonio Huete Jimenez.Pp 298490834b2SAntonio Huete Jimenez.Dl "#!/usr/local/bin/php -n -q -dsafe_mode=0" 299490834b2SAntonio Huete Jimenez.Pp 300490834b2SAntonio Huete Jimenezthen the 301490834b2SAntonio Huete Jimenez.Pa /usr/local/bin/php 302490834b2SAntonio Huete Jimenezprogram would have been started with the arguments of: 303490834b2SAntonio Huete Jimenez.Bd -literal -offset indent 304490834b2SAntonio Huete Jimenezarg[0] = '/usr/local/bin/php' 305490834b2SAntonio Huete Jimenezarg[1] = '-n' 306490834b2SAntonio Huete Jimenezarg[2] = '-q' 307490834b2SAntonio Huete Jimenezarg[3] = '-dsafe_mode=0' 308490834b2SAntonio Huete Jimenezarg[4] = '/usr/local/bin/someport' 309490834b2SAntonio Huete Jimenez.Ed 310490834b2SAntonio Huete Jimenez.Pp 311490834b2SAntonio Huete Jimenezplus any arguments the user specified when executing 312490834b2SAntonio Huete Jimenez.Pa someport . 313490834b2SAntonio Huete JimenezHowever, this processing of multiple options on the 314490834b2SAntonio Huete Jimenez.Ql #! 315490834b2SAntonio Huete Jimenezline is not the way any other operating system parses the 316490834b2SAntonio Huete Jimenezfirst line of an interpreted script. 317490834b2SAntonio Huete JimenezSo after a change which was made for 318490834b2SAntonio Huete Jimenez.Fx 6.0 319490834b2SAntonio Huete Jimenezrelease, that script will result in 320490834b2SAntonio Huete Jimenez.Pa /usr/local/bin/php 321490834b2SAntonio Huete Jimenezbeing started with the arguments of: 322490834b2SAntonio Huete Jimenez.Bd -literal -offset indent 323490834b2SAntonio Huete Jimenezarg[0] = '/usr/local/bin/php' 324490834b2SAntonio Huete Jimenezarg[1] = '-n -q -dsafe_mode=0' 325490834b2SAntonio Huete Jimenezarg[2] = '/usr/local/bin/someport' 326490834b2SAntonio Huete Jimenez.Ed 327490834b2SAntonio Huete Jimenez.Pp 328490834b2SAntonio Huete Jimenezplus any arguments the user specified. 329490834b2SAntonio Huete JimenezThis caused a significant change in the behavior of a few scripts. 330490834b2SAntonio Huete JimenezIn the case of above script, to have it behave the same way under 331490834b2SAntonio Huete Jimenez.Fx 6.0 332490834b2SAntonio Huete Jimenezas it did under earlier releases, the first line should be 333490834b2SAntonio Huete Jimenezchanged to: 334490834b2SAntonio Huete Jimenez.Pp 335490834b2SAntonio Huete Jimenez.Dl "#!/usr/bin/env -S /usr/local/bin/php -n -q -dsafe_mode=0" 336490834b2SAntonio Huete Jimenez.Pp 337490834b2SAntonio Huete JimenezThe 338490834b2SAntonio Huete Jimenez.Nm 339490834b2SAntonio Huete Jimenezutility will be started with the entire line as a single 340490834b2SAntonio Huete Jimenezargument: 341490834b2SAntonio Huete Jimenez.Pp 342490834b2SAntonio Huete Jimenez.Dl "arg[1] = '-S /usr/local/bin/php -n -q -dsafe_mode=0'" 343490834b2SAntonio Huete Jimenez.Pp 344490834b2SAntonio Huete Jimenezand then 345490834b2SAntonio Huete Jimenez.Fl S 346490834b2SAntonio Huete Jimenezprocessing will split that line into separate arguments before 347490834b2SAntonio Huete Jimenezexecuting 348490834b2SAntonio Huete Jimenez.Pa /usr/local/bin/php . 349490834b2SAntonio Huete Jimenez.\" 350490834b2SAntonio Huete Jimenez.Sh ENVIRONMENT 351490834b2SAntonio Huete JimenezThe 352490834b2SAntonio Huete Jimenez.Nm 353490834b2SAntonio Huete Jimenezutility uses the 354490834b2SAntonio Huete Jimenez.Ev PATH 355490834b2SAntonio Huete Jimenezenvironment variable to locate the requested 356490834b2SAntonio Huete Jimenez.Ar utility 357490834b2SAntonio Huete Jimenezif the name contains no 358490834b2SAntonio Huete Jimenez.Ql / 359490834b2SAntonio Huete Jimenezcharacters, unless the 360490834b2SAntonio Huete Jimenez.Fl P 361490834b2SAntonio Huete Jimenezoption has been specified. 362490834b2SAntonio Huete Jimenez.Sh EXIT STATUS 363490834b2SAntonio Huete Jimenez.Ex -std 364490834b2SAntonio Huete JimenezAn exit status of 126 indicates that 365490834b2SAntonio Huete Jimenez.Ar utility 366490834b2SAntonio Huete Jimenezwas found, but could not be executed. 367490834b2SAntonio Huete JimenezAn exit status of 127 indicates that 368490834b2SAntonio Huete Jimenez.Ar utility 369490834b2SAntonio Huete Jimenezcould not be found. 370490834b2SAntonio Huete Jimenez.Sh EXAMPLES 371490834b2SAntonio Huete JimenezSince the 372490834b2SAntonio Huete Jimenez.Nm 373490834b2SAntonio Huete Jimenezutility is often used as part of the first line of an interpreted script, 374490834b2SAntonio Huete Jimenezthe following examples show a number of ways that the 375490834b2SAntonio Huete Jimenez.Nm 376490834b2SAntonio Huete Jimenezutility can be useful in scripts. 377490834b2SAntonio Huete Jimenez.Pp 378490834b2SAntonio Huete JimenezThe kernel processing of an interpreted script does not allow a script 379490834b2SAntonio Huete Jimenezto directly reference some other script as its own interpreter. 380490834b2SAntonio Huete JimenezAs a way around this, the main difference between 381490834b2SAntonio Huete Jimenez.Pp 382490834b2SAntonio Huete Jimenez.Dl #!/usr/local/bin/foo 383490834b2SAntonio Huete Jimenezand 384490834b2SAntonio Huete Jimenez.Dl "#!/usr/bin/env /usr/local/bin/foo" 385490834b2SAntonio Huete Jimenez.Pp 386490834b2SAntonio Huete Jimenezis that the latter works even if 387490834b2SAntonio Huete Jimenez.Pa /usr/local/bin/foo 388490834b2SAntonio Huete Jimenezis itself an interpreted script. 389490834b2SAntonio Huete Jimenez.Pp 390490834b2SAntonio Huete JimenezProbably the most common use of 391490834b2SAntonio Huete Jimenez.Nm 392490834b2SAntonio Huete Jimenezis to find the correct interpreter for a script, when the interpreter 393490834b2SAntonio Huete Jimenezmay be in different directories on different systems. 394490834b2SAntonio Huete JimenezThe following example will find the 395490834b2SAntonio Huete Jimenez.Ql perl 396490834b2SAntonio Huete Jimenezinterpreter by searching through the directories specified by 397490834b2SAntonio Huete Jimenez.Ev PATH . 398490834b2SAntonio Huete Jimenez.Pp 399490834b2SAntonio Huete Jimenez.Dl "#!/usr/bin/env perl" 400490834b2SAntonio Huete Jimenez.Pp 401490834b2SAntonio Huete JimenezOne limitation of that example is that it assumes the user's value 402490834b2SAntonio Huete Jimenezfor 403490834b2SAntonio Huete Jimenez.Ev PATH 404490834b2SAntonio Huete Jimenezis set to a value which will find the interpreter you want 405490834b2SAntonio Huete Jimenezto execute. 406490834b2SAntonio Huete JimenezThe 407490834b2SAntonio Huete Jimenez.Fl P 408490834b2SAntonio Huete Jimenezoption can be used to make sure a specific list of directories is 409490834b2SAntonio Huete Jimenezused in the search for 410490834b2SAntonio Huete Jimenez.Ar utility . 411490834b2SAntonio Huete JimenezNote that the 412490834b2SAntonio Huete Jimenez.Fl S 413490834b2SAntonio Huete Jimenezoption is also required for this example to work correctly. 414490834b2SAntonio Huete Jimenez.Pp 415490834b2SAntonio Huete Jimenez.Dl "#!/usr/bin/env -S -P/usr/local/bin:/usr/bin perl" 416490834b2SAntonio Huete Jimenez.Pp 417490834b2SAntonio Huete JimenezThe above finds 418490834b2SAntonio Huete Jimenez.Ql perl 419490834b2SAntonio Huete Jimenezonly if it is in 420490834b2SAntonio Huete Jimenez.Pa /usr/local/bin 421490834b2SAntonio Huete Jimenezor 422490834b2SAntonio Huete Jimenez.Pa /usr/bin . 423490834b2SAntonio Huete JimenezThat could be combined with the present value of 424490834b2SAntonio Huete Jimenez.Ev PATH , 425490834b2SAntonio Huete Jimenezto provide more flexibility. 426490834b2SAntonio Huete JimenezNote that spaces are not required between the 427490834b2SAntonio Huete Jimenez.Fl S 428490834b2SAntonio Huete Jimenezand 429490834b2SAntonio Huete Jimenez.Fl P 430490834b2SAntonio Huete Jimenezoptions: 431490834b2SAntonio Huete Jimenez.Pp 432490834b2SAntonio Huete Jimenez.Dl "#!/usr/bin/env -S-P/usr/local/bin:/usr/bin:${PATH} perl" 433490834b2SAntonio Huete Jimenez.Sh COMPATIBILITY 434490834b2SAntonio Huete JimenezThe 435490834b2SAntonio Huete Jimenez.Nm 436490834b2SAntonio Huete Jimenezutility accepts the 437490834b2SAntonio Huete Jimenez.Fl 438490834b2SAntonio Huete Jimenezoption as a synonym for 439490834b2SAntonio Huete Jimenez.Fl i . 440490834b2SAntonio Huete Jimenez.Sh SEE ALSO 441490834b2SAntonio Huete Jimenez.Xr printenv 1 , 442490834b2SAntonio Huete Jimenez.Xr sh 1 , 443490834b2SAntonio Huete Jimenez.Xr execvp 3 , 444490834b2SAntonio Huete Jimenez.Xr environ 7 445490834b2SAntonio Huete Jimenez.Sh STANDARDS 446490834b2SAntonio Huete JimenezThe 447490834b2SAntonio Huete Jimenez.Nm 448490834b2SAntonio Huete Jimenezutility conforms to 449490834b2SAntonio Huete Jimenez.St -p1003.1-2001 . 450490834b2SAntonio Huete JimenezThe 451490834b2SAntonio Huete Jimenez.Fl P , S , u 452490834b2SAntonio Huete Jimenezand 453490834b2SAntonio Huete Jimenez.Fl v 454490834b2SAntonio Huete Jimenezoptions are non-standard extensions supported by 455490834b2SAntonio Huete Jimenez.Fx , 456490834b2SAntonio Huete Jimenezbut which may not be available on other operating systems. 457490834b2SAntonio Huete Jimenez.Sh HISTORY 458490834b2SAntonio Huete JimenezThe 459490834b2SAntonio Huete Jimenez.Nm 460490834b2SAntonio Huete Jimenezcommand appeared in 461490834b2SAntonio Huete Jimenez.Bx 4.4 . 462490834b2SAntonio Huete JimenezThe 463490834b2SAntonio Huete Jimenez.Fl P , S 464490834b2SAntonio Huete Jimenezand 465490834b2SAntonio Huete Jimenez.Fl v 466490834b2SAntonio Huete Jimenezoptions were added in 467490834b2SAntonio Huete Jimenez.Fx 6.0 . 468490834b2SAntonio Huete Jimenez.Sh BUGS 469490834b2SAntonio Huete JimenezThe 470490834b2SAntonio Huete Jimenez.Nm 471490834b2SAntonio Huete Jimenezutility does not handle values of 472490834b2SAntonio Huete Jimenez.Ar utility 473490834b2SAntonio Huete Jimenezwhich have an equals sign 474490834b2SAntonio Huete Jimenez.Pq Ql = 475490834b2SAntonio Huete Jimenezin their name, for obvious reasons. 476490834b2SAntonio Huete Jimenez.Pp 477490834b2SAntonio Huete JimenezThe 478490834b2SAntonio Huete Jimenez.Nm 479490834b2SAntonio Huete Jimenezutility does not take multibyte characters into account when 480490834b2SAntonio Huete Jimenezprocessing the 481490834b2SAntonio Huete Jimenez.Fl S 482490834b2SAntonio Huete Jimenezoption, which may lead to incorrect results in some locales. 483