Command-line Options
위의 Shell Options 메뉴에서 소개된 옵션외에 다음과 같은 옵션들을 명령 라인에서 사용할 수 있습니다.
-c
sh -c 'command ...' arg1 arg2
형식으로 실행할 수 있습니다.
이때 command 에서 $0
값은 arg1 이 되고 $1
값은 arg2 가 됩니다.
$ sh -c 'echo $0 $1 $2' 111 222 333
111 222 333
# for 문에서는 인수가 $1 부터 출력되므로 111 은 표시되지 않는다.
$ sh -c 'for arg in "$@"; do echo $arg; done' 111 222 333
222
333
# 다음과 같이 임의의 인수 X 를 추가해야 111 이 $1 자리에 배정된다.
$ sh -c 'for arg in "$@"; do echo $arg; done' X 111 222 333
111
222
333
-----------------------------------------------
$ sh -c "$( curl -fsSL http://gef.blah.cat/sh )"
. . .
-i
interactive shell 을 만들 때 사용합니다.
-l
login shell 을 만들 때 사용합니다.
-r
bash 가 제한된 환경에서 실행되게 합니다. ( 아래 RESTRICTED SHELL 참조 )
-s
스크립트를 stdin 으로부터 읽어들여 실행합니다. 이때 positional parameters 를 설정할 수 있습니다.
$ bash <<\EOF -s foo bar zoo
echo $1, $2, $3
echo $#
EOF
foo, bar, zoo
3
$ cat test.sh
#! /bin/bash
echo -------------
echo arg1 : $1
echo arg2 : $2
echo =============
# $1, $2 값으로 -P, chefdk 가 설정된다.
$ cat test.sh | bash -s -- -P chefdk
-------------
arg1 : -P
arg2 : check
=============
$ curl -L https://chef.io/chef/install.sh | sudo bash -s -- -P chefdk
-v
Makefile 에서와 같이 실행 전에 먼저 명령문을 출력합니다.
$ env -i bash -v -c 'echo "-v option"'
echo "-v option"
-v option
-D
메시지 localization 을 위해 $"..."
quotes 을 이용해 작성한 스트링을 stdout 으로 출력합니다.
기본적으로 -n
( noexec ) 옵션을 포함하므로 명령이 실행되지는 않습니다.
[-+]O [shopt_option]
shopt 명령으로 설정하는 bash 옵션을 명령 라인에서 -O 옵션명
( O
는 대문자 )
을 이용해 설정하거나 +O 옵션명
을 이용해 해제할 수 있습니다.
$ bash -c 'shopt' | grep "globstar\|lastpipe"
globstar off
lastpipe off
$ bash -O globstar -O lastpipe -c 'shopt' | grep "globstar\|lastpipe"
globstar on
lastpipe on
Multi-character options
이 long 옵션은 bash 에서 사용되는 옵션으로 사용할 때는 single-character options 앞에 위치해야 오류가 발생하지 않습니다.
--debugger
extdebug
옵션을 turn on 합니다.
--dump-po-strings
-D
옵션과 같은 것인데 GNU gettext po ( portable object ) file format 으로 출력합니다.
기본적으로 -n
( noexec ) 옵션을 포함하므로 명령이 실행되지는 않습니다.
--dump-strings
-D
옵션과 동일합니다.
--help
help 메시지를 출력합니다.
--init-file file 또는 --rcfile file
interactive shell 에서 /etc/bash.bashrc
, ~/.bashrc
파일을 실행하는 대신에
--rcfile
옵션에서 설정한 파일을 실행합니다.
--login
-l
옵션과 같은 것입니다.
--noediting
interactive shell 에서 readline 기능을 사용하지 않습니다.
--noprofile
login shell 에서 /etc/profile
, ~/.bash_profile
, ~/.bash_login
, ~/.profile
파일을 읽어들이지 않습니다.
--norc
interactive shell 에서 /etc/bash.bashrc
, ~/.bashrc
초기화 파일을 실행하지 않습니다.sh
의 경우는 이옵션이 디폴트 입니다.
만약에 parent process 로부터 전달되는 환경변수도 empty 로 만들려면 다음과 같이하면 됩니다.
$ env -i bash --norc
# login shell 의 경우
$ env -i bash --login --noprofile --norc
--posix
bash 가 posix 기준을 따르는 모드로 실행되게 합니다.
--restricted
bash 가 제한된 환경에서 실행되게 합니다. ( 아래 RESTRICTED SHELL 참조 )
--verbose
-v
옵션과 같은 것입니다.
--version
버전 정보를 출력합니다.
RESTRICTED SHELL
bash 를 실행할 때 -r
옵션을 사용하거나 rbash
명령을 사용하면
제한된 환경에서 실행이 됩니다.
제한된 환경은 startup 파일을 읽은 후에 적용되며
아래와 같은 항목들을 사용할 수 없게 됩니다.
하지만 새로운 bash 또는 sh 이 실행되면 제한이 없어지기 때문에
주로 chroot 와 함께 사용됩니다.
changing directories with
cd
setting or unsetting the values of
SHELL
,PATH
,ENV
, orBASH_ENV
specifying command names containing
/
specifying a filename containing a
/
as an argument to the.
builtin commandspecifying a filename containing a slash as an argument to the -p option to the hash builtin command
importing function definitions from the shell environment at startup
parsing the value of
SHELLOPTS
from the shell environment at startupredirecting output using the
>
,>|
,<>
,>&
,&>
, and>>
redirection operatorsusing the exec builtin command to replace the shell with another command
adding or deleting builtin commands with the -f and -d options to the enable builtin command
using the enable builtin command to enable disabled shell builtins
specifying the -p option to the command builtin command
turning off restricted mode with set +r or set +o restricted.