[nat@system1 html]$ pwd
[nat@system1 html]$ dirname /usr/share/nginx/html
[nat@system1 html]$ dirname /usr/share/nginx/html/
404.html        50x.html        index.html      nginx-logo.png  poweredby.png
[nat@system1 html]$ dirname /usr/share/nginx/html/404.html 

[nat@system1 html]$ 

this_dir=$(dirname $BASH_SOURCE)


       The following variables are set by the shell:

       BASH   Expands  to  the  full file name used to invoke this instance of



              A colon-separated list of enabled shell options.  Each  word  in

              the  list  is  a  valid  argument for the -s option to the shopt

              builtin command (see SHELL BUILTIN COMMANDS below).  The options

              appearing  in  BASHOPTS  are  those reported as on by shopt.  If

              this variable is in the environment when bash  starts  up,  each

              shell  option  in  the  list  will be enabled before reading any

              startup files.  This variable is read-only.


              Expands to the process ID of the  current  bash process.   This

              differs  from  $$ under certain circumstances, such as subshells

              that do not require bash to be re-initialized.


              An associative array variable whose members  correspond  to  the

              internal  list  of  aliases  as maintained by the alias builtin.

              Elements added to this array appear in the alias list; unsetting

              array elements cause aliases to be removed from the alias list.


              An  array  variable whose values are the number of parameters in

              each frame of the current bash execution call stack.  The number

              of  parameters  to  the  current  subroutine  (shell function or

              script executed with . or source) is at the top  of  the stack.

              When  a  subroutine is executed, the number of parameters passed

              is pushed onto BASH_ARGC.  The shell sets BASH_ARGC only when in

              extended  debugging  mode  (see  the description of the extdebug

              option to the shopt builtin below)


              An array variable containing all of the parameters in  the  cur‐

              rent bash execution call stack.  The final parameter of the last

              subroutine call is at the top of the stack; the first  parameter

              of the initial call is at the bottom.  When a subroutine is exe‐

              cuted, the parameters supplied are pushed onto  BASH_ARGV.   The

              shell  sets  BASH_ARGV only when in extended debugging mode (see

              the description of the extdebug  option  to  the  shopt  builtin



              An  associative  array  variable whose members correspond to the

              internal hash table  of  commands  as  maintained  by  the  hash

              builtin.  Elements added to this array appear in the hash table;

              unsetting array elements cause commands to be removed  from  the

              hash table.


              The  command  currently  being executed or about to be executed,

              unless the shell is executing a command as the result of a trap,

              in  which  case  it  is the command executing at the time of the



              The command argument to the -c invocation option.


              An array variable whose members are the line numbers  in  source

              files  where  each corresponding member of FUNCNAME was invoked.

              ${BASH_LINENO[$i]}  is  the  line  number  in  the  source  file

              (${BASH_SOURCE[$i+1]})  where  ${FUNCNAME[$i]}  was  called  (or

              ${BASH_LINENO[$i-1]} if referenced within  another  shell func‐

              tion).  Use LINENO to obtain the current line number.


              An  array  variable  whose members are assigned by the =~ binary

              operator to the [[ conditional command.  The element with  index

              0  is  the  portion  of  the  string matching the entire regular

              expression.  The element with index n  is  the  portion  of  the

              string matching the nth parenthesized subexpression.  This vari‐

              able is read-only.


              An array variable whose members are the source  filenames  where

              the  corresponding  shell  function  names in the FUNCNAME array

              variable are defined.  The  shell  function  ${FUNCNAME[$i]}  is

              defined   in   the   file  ${BASH_SOURCE[$i]}  and called  from



              Incremented by one each time a subshell or subshell  environment

              is spawned.  The initial value is 0.


              A readonly array variable whose members hold version information

              for this instance of bash.  The values  assigned  to  the  array

              members are as follows:

              BASH_VERSINFO[0]        The major version number (the release).

              BASH_VERSINFO[1]        The minor version number (the version).

              BASH_VERSINFO[2]        The patch level.

              BASH_VERSINFO[3]        The build version.

              BASH_VERSINFO[4]        The release status (e.g., beta1).

              BASH_VERSINFO[5]        The value of MACHTYPE.


              Expands  to  a string describing the version of this instance of



              An index into ${COMP_WORDS} of the word containing  the  current

              cursor position.  This variable is available only in shell func‐

              tions invoked by the  programmable  completion  facilities  (see

              Programmable Completion below).


              The key (or final key of a key sequence) used to invoke the cur‐

              rent completion function.


              The current command line.  This variable is  available only  in

              shell  functions  and  external commands invoked by the program‐

              mable completion facilities (see Programmable Completion below).


              The index of the current cursor position relative to the  begin‐

              ning  of the current command.  If the current cursor position is

              at the end of the current command, the value of this variable is

              equal  to  ${#COMP_LINE}.   This  variable  is available only in

              shell functions and external commands invoked  by  the program‐

              mable completion facilities (see Programmable Completion below).


              Set  to an integer value corresponding to the type of completion

              attempted that caused a completion function to be  called:  TAB,

              for  normal completion, ?, for listing completions after succes‐

              sive tabs, !, for listing alternatives on partial  word  comple‐

              tion,  @,  to list completions if the word is not unmodified, or

              %, for menu completion.  This  variable  is  available only  in

              shell  functions  and  external commands invoked by the program‐

              mable completion facilities (see Programmable Completion below).


              The set of characters that the readline library treats  as  word

              separators  when performing word completion.  If COMP_WORDBREAKS

              is unset, it loses its special properties, even if it is  subse‐

              quently reset.


              An  array variable (see Arrays below) consisting of the individ‐

              ual words in the current command line.  The line is  split  into

              words  as  readline  would  split  it,  using COMP_WORDBREAKS as

              described above.  This variable is available only in shell func‐

              tions  invoked  by  the  programmable completion facilities (see

              Programmable Completion below).

       COPROC An array variable (see Arrays below) created to  hold  the  file

              descriptors  for  output  from and input to an unnamed coprocess

              (see Coprocesses above).


              An array variable (see Arrays below) containing the current con‐

              tents  of  the directory stack.  Directories appear in the stack

              in the order they are displayed by the dirs builtin.   Assigning

              to members of this array variable may be used to modify directo‐

              ries already in the stack, but the pushd and popd builtins  must

              be used to add and remove directories.  Assignment to this vari‐

              able will not change the  current  directory.   If  DIRSTACK  is

              unset,  it  loses  its  special properties, even if it is subse‐

              quently reset.

       EUID   Expands to the effective user ID of the current  user,  initial‐

              ized at shell startup.  This variable is readonly.


              An  array  variable  containing the names of all shell functions

              currently in the execution call stack.  The element with index 0

              is the name of any currently-executing shell function.  The bot‐

              tom-most element (the one with the  highest  index)  is  "main".

              This  variable  exists  only when a shell function is executing.

              Assignments to FUNCNAME have no effect and return an error  sta‐

              tus.   If  FUNCNAME  is  unset, it loses its special properties,

              even if it is subsequently reset.


              This variable can be  used  with  BASH_LINENO  and BASH_SOURCE.

              Each   element   of   FUNCNAME  has  corresponding  elements  in

              BASH_LINENO and BASH_SOURCE to describe  the  call stack.   For

              instance,    ${FUNCNAME[$i]}    was   called   from   the   file

              ${BASH_SOURCE[$i+1]} at  line  number  ${BASH_LINENO[$i]}.   The

              caller builtin displays the current call stack using this infor‐


       GROUPS An array variable containing the list of  groups  of  which  the

              current  user is a member.  Assignments to GROUPS have no effect

              and return an error status.  If GROUPS is unset,  it loses  its

              special properties, even if it is subsequently reset.


              The history number, or index in the history list, of the current

              command.  If HISTCMD is unset, it loses its special  properties,

              even if it is subsequently reset.


              Automatically set to the name of the current host.


              Automatically  set  to a string that uniquely describes the type

              of machine on which bash is executing.  The default  is system-


       LINENO Each  time this parameter is referenced, the shell substitutes a

              decimal number representing the current sequential  line  number

              (starting  with  1)  within a script or function.  When not in a

              script or function, the value substituted is not  guaranteed  to

              be meaningful.  If LINENO is unset, it loses its special proper‐

              ties, even if it is subsequently reset.


              Automatically set to a string that fully  describes  the system

              type  on  which  bash is executing, in the standard GNU cpu-com‐

              pany-system format.  The default is system-dependent.


              An array variable (see Arrays below) created to  hold  the  text

              read by the mapfile builtin when no variable name is supplied.

       OLDPWD The previous working directory as set by the cd command.

       OPTARG The  value  of the last option argument processed by the getopts

              builtin command (see SHELL BUILTIN COMMANDS below).

       OPTIND The index of the next argument to be processed  by  the  getopts

              builtin command (see SHELL BUILTIN COMMANDS below).

       OSTYPE Automatically  set to a string that describes the operating sys‐

              tem on which bash is executing.  The  default  is  system-depen‐



              An  array  variable (see Arrays below) containing a list of exit

              status values from the processes in  the  most-recently-executed

              foreground pipeline (which may contain only a single command).

       PPID   The  process  ID  of the shell's parent.  This variable is read‐


       PWD    The current working directory as set by the cd command.

       RANDOM Each time this parameter is referenced, a random integer between

              0 and 32767 is generated.  The sequence of random numbers may be

              initialized by assigning a value to RANDOM.  If RANDOM is unset,

              it  loses  its  special  properties,  even if it is subsequently



              The contents of the readline line buffer, for use with "bind -x"

              (see SHELL BUILTIN COMMANDS below).


              The position of the insertion point in the readline line buffer,

              for use with "bind -x" (see SHELL BUILTIN COMMANDS below).

       REPLY  Set to the line of input read by the read builtin  command  when

              no arguments are supplied.


              Each  time  this  parameter is referenced, the number of seconds

              since shell invocation is returned.  If a value is  assigned  to

              SECONDS,  the  value  returned upon subsequent references is the

              number of seconds since the assignment plus the value  assigned.

              If SECONDS is unset, it loses its special properties, even if it

              is subsequently reset.


              A colon-separated list of enabled shell options.  Each  word  in

              the  list  is  a  valid  argument  for  the -o option to the set

              builtin command (see SHELL BUILTIN COMMANDS below).  The options

              appearing  in  SHELLOPTS are those reported as on by set -o.  If

              this variable is in the environment when bash  starts  up,  each

              shell  option  in  the  list  will be enabled before reading any

              startup files.  This variable is read-only.

       SHLVL  Incremented by one each time an instance of bash is started.

       UID    Expands to the user ID of the current user, initialized at shell

              startup.  This variable is readonly.


       The  following  variables  are  used by the shell.  In some cases, bash

       assigns a default value to a variable; these cases are noted below.



              If this parameter is set when bash is executing a shell  script,

              its  value  is  interpreted as a filename containing commands to

              initialize the shell, as in ~/.bashrc.  The value of BASH_ENV is

              subjected  to  parameter  expansion,  command substitution, and

              arithmetic expansion before being interpreted as  a  file name.

              PATH is not used to search for the resultant file name.


              If  set  to an integer corresponding to a valid file descriptor,

              bash will write the  trace  output  generated  when set  -x  is

              enabled  to that file descriptor.  The file descriptor is closed

              when BASH_XTRACEFD is unset or assigned a new value.   Unsetting

              BASH_XTRACEFD  or assigning it the empty string causes the trace

              output to be sent to the  standard  error.   Note  that  setting

              BASH_XTRACEFD to 2 (the standard error file descriptor) and then

              unsetting it will result in the standard error being closed.

       CDPATH The search path for the cd command.  This is  a  colon-separated

              list  of  directories  in  which the shell looks for destination

              directories specified by the cd  command.   A  sample  value  is



              Used  by  the  select compound command to determine the terminal

              width when printing selection  lists.   Automatically  set  upon

              receipt of a SIGWINCH.


              An array variable from which bash reads the possible completions

              generated by a shell function invoked by the  programmable  com‐

              pletion facility (see Programmable Completion below).

       EMACS  If  bash  finds  this variable in the environment when the shell

              starts with value "t", it assumes that the shell is running  in

              an Emacs shell buffer and disables line editing.

       ENV    Similar  to  BASH_ENV;  used  when the shell is invoked in POSIX


       FCEDIT The default editor for the fc builtin command.


              A colon-separated list of suffixes  to  ignore  when  performing

              filename completion (see READLINE below).  A filename whose suf‐

              fix matches one of the entries in FIGNORE is excluded  from  the

              list of matched filenames.  A sample value is ".o:~" (Quoting is

              needed when assigning a value to this variable,  which  contains



              If  set  to  a  numeric  value greater than 0, defines a maximum

              function nesting level.  Function invocations that  exceed  this

              nesting level will cause the current command to abort.


              A colon-separated list of patterns defining the set of filenames

              to be ignored by pathname expansion.  If a filename matched by a

              pathname  expansion  pattern also matches one of the patterns in

              GLOBIGNORE, it is removed from the list of matches.


              A colon-separated list of values controlling  how  commands  are

              saved  on  the  history  list.   If  the list of values includes

              ignorespace, lines which begin with a space  character  are  not

              saved  in  the history list.  A value of ignoredups causes lines

              matching the previous history entry to not be saved.  A value of

              ignoreboth is shorthand for ignorespace and ignoredups.  A value

              of erasedups causes all previous lines matching the current line

              to  be  removed from the history list before that line is saved.

              Any value not in the above list is ignored.  If  HISTCONTROL  is

              unset,  or does not include a valid value, all lines read by the

              shell parser are saved on the history list, subject to the value

              of  HISTIGNORE.  The second and subsequent lines of a multi-line

              compound command are not tested, and are added  to  the history

              regardless of the value of HISTCONTROL.


              The name of the file in which command history is saved (see HIS‐

              TORY below).  The default value is ~/.bash_history.   If unset,

              the  command  history  is  not  saved  when an interactive shell



              The maximum number of lines contained in the history file.  When

              this  variable  is  assigned  a value, the history file is trun‐

              cated, if necessary, by removing the oldest entries, to  contain

              no  more  than  that number of lines.  The default value is 500.

              The history file is also truncated to this size after writing it

              when an interactive shell exits.


              A  colon-separated list of patterns used to decide which command

              lines should be saved on the  history  list.   Each  pattern  is

              anchored  at  the  beginning of the line and must match the com‐

              plete line (no implicit  `*'  is  appended).   Each pattern  is

              tested  against  the line after the checks specified by HISTCON‐

              TROL are applied.  In  addition  to  the  normal  shell  pattern

              matching characters, `&' matches the previous history line. `&'

              may be escaped using  a  backslash;  the  backslash is  removed

              before attempting a match.  The second and subsequent lines of a

              multi-line compound command are not tested, and are added to the

              history regardless of the value of HISTIGNORE.


              The  number  of commands to remember in the command history (see

              HISTORY below).  The default value is 500.


              If this variable is set and not null, its value  is  used as  a

              format string for strftime(3) to print the time stamp associated

              with each history entry displayed by the  history  builtin.   If

              this  variable  is  set,  time stamps are written to the history

              file so they may be preserved across shell sessions.  This  uses

              the  history  comment  character  to distinguish timestamps from

              other history lines.

       HOME   The home directory of the current user; the default argument for

              the cd builtin command.  The value of this variable is also used

              when performing tilde expansion.


              Contains the name of a file in the  same  format  as  /etc/hosts

              that should be read when the shell needs to complete a hostname.

              The list of possible hostname completions may be  changed  while

              the  shell  is  running;  the  next  time hostname completion is

              attempted after the value is changed, bash adds the contents  of

              the  new file to the existing list.  If HOSTFILE is set, but has

              no value, or does not name a readable  file,  bash attempts  to

              read  /etc/hosts to obtain the list of possible hostname comple‐

              tions.  When HOSTFILE is unset, the hostname list is cleared.

       IFS    The Internal Field Separator that is  used  for  word  splitting

              after  expansion  and  to  split  lines into words with the read

              builtin  command.   The  default  value  is  ``<new< span="" style="word-wrap: break-word;">‐



              Controls the action of an interactive shell on receipt of an EOF

              character as the sole input.  If set, the value is the number of

              consecutive  EOF  characters  which  must  be typed as the first

              characters on an input line before bash exits.  If the  variable

              exists  but  does not have a numeric value, or has no value, the

              default value is 10.  If it does not exist,  EOF signifies  the

              end of input to the shell.


              The  filename  for  the  readline  startup  file, overriding the

              default of ~/.inputrc (see READLINE below).

       LANG   Used to determine the  locale  category  for  any  category  not

              specifically selected with a variable starting with LC_.

       LC_ALL This  variable  overrides  the  value  of LANG and any other LC_

              variable specifying a locale category.


              This variable determines the collation order used  when  sorting

              the  results  of pathname expansion, and determines the behavior

              of  range  expressions,  equivalence  classes,  and   collating

              sequences within pathname expansion and pattern matching.


              This  variable  determines  the interpretation of characters and

              the behavior of character classes within pathname expansion  and

              pattern matching.


              This  variable  determines  the locale used to translate double-

              quoted strings preceded by a $.


              This variable determines the locale  category  used  for  number


       LINES  Used  by  the  select  compound  command to determine the column

              length for printing selection  lists.   Automatically  set  upon

              receipt of a SIGWINCH.

       MAIL   If  this  parameter  is  set to a file or directory name and the

              MAILPATH variable is not set,  bash  informs  the  user  of  the

              arrival  of  mail in the specified file or Maildir-format direc‐



              Specifies how often (in seconds)  bash  checks  for  mail.   The

              default  is  60 seconds.  When it is time to check for mail, the

              shell does so before displaying the  primary  prompt.  If  this

              variable  is  unset,  or  set  to  a  value that is not a number

              greater than or equal to zero, the shell disables mail checking.


              A colon-separated list of file names to  be  checked  for  mail.

              The message to be printed when mail arrives in a particular file

              may be specified by separating the file name  from  the message

              with a `?'.  When used in the text of the message, $_ expands to

              the name of the current mailfile.  Example:

              MAILPATH='/var/mail/bfox?"You  have  mail":~/shell-mail?"$_  has


              Bash  supplies  a default value for this variable, but the loca‐

              tion of the user mail files that it  uses  is  system  dependent

              (e.g., /var/mail/$USER).

       OPTERR If set to the value 1, bash displays error messages generated by

              the getopts builtin command (see SHELL BUILTIN COMMANDS  below).

              OPTERR  is  initialized to 1 each time the shell is invoked or a

              shell script is executed.

       PATH   The search path for commands.  It is a colon-separated  list of

              directories  in  which the shell looks for commands (see COMMAND

              EXECUTION below).  A zero-length (null) directory  name in  the

              value of PATH indicates the current directory.  A null directory

              name may appear as two adjacent colons,  or  as  an  initial  or

              trailing  colon.   The  default path is system-dependent, and is

              set by the administrator who installs bash.  A common  value  is



              If  this  variable  is  in the environment when bash starts, the

              shell enters posix mode before reading the startup files, as  if

              the  --posix  invocation option had been supplied.  If it is set

              while the shell is running, bash enables posix mode, as  if  the

              command set -o posix had been executed.


              If set, the value is executed as a command prior to issuing each

              primary prompt.


              If set to a number greater than zero, the value is used  as  the

              number of trailing directory components to retain when expanding

              the \w and \W  prompt  string  escapes  (see PROMPTING  below).

              Characters removed are replaced with an ellipsis.

       PS1    The  value  of  this parameter is expanded (see PROMPTING below)

              and used as the primary prompt string.   The  default value  is

              ``\s-\v\$ ''.

       PS2    The  value of this parameter is expanded as with PS1 and used as

              the secondary prompt string.  The default is ``> ''.

       PS3    The value of this parameter is used as the prompt for the select

              command (see SHELL GRAMMAR above).

       PS4    The  value  of  this  parameter  is expanded as with PS1 and the

              value is printed before each command  bash  displays during  an

              execution  trace.  The first character of PS4 is replicated mul‐

              tiple times, as necessary, to indicate multiple levels of  indi‐

              rection.  The default is ``+ ''.

       SHELL  The full pathname to the shell is kept in this environment vari‐

              able.  If it is not set when the shell starts, bash  assigns  to

              it the full pathname of the current user's login shell.


              The  value of this parameter is used as a format string specify‐

              ing how the timing information for pipelines prefixed  with  the

              time  reserved word should be displayed.  The % character intro‐

              duces an escape sequence that is expanded to  a  time value  or

              other  information.  The escape sequences and their meanings are

              as follows; the braces denote optional portions.

              %%        A literal %.

              %[p][l]R  The elapsed time in seconds.

              %[p][l]U  The number of CPU seconds spent in user mode.

              %[p][l]S  The number of CPU seconds spent in system mode.

              %P        The CPU percentage, computed as (%U + %S) / %R.


              The optional p is a digit specifying the precision,  the  number

              of fractional digits after a decimal point.  A value of 0 causes

              no decimal point or fraction to be output.  At most three places

              after  the  decimal  point may be specified; values of p greater

              than 3 are changed to 3.  If p is not specified, the value 3  is



              The  optional l specifies a longer format, including minutes, of

              the form MMmSS.FFs.  The value of p determines  whether or  not

              the fraction is included.


              If  this  variable  is not set, bash acts as if it had the value

              $'\nreal\t%3lR\nuser\t%3lU\nsys%3lS'.  If the value is null,  no

              timing  information  is  displayed.  A trailing newline is added

              when the format string is displayed.

       TMOUT  If set to a value greater than zero, TMOUT  is  treated  as  the

              default timeout for the read builtin.  The select command termi‐

              nates if input does not arrive after TMOUT seconds when input is

              coming  from  a terminal.  In an interactive shell, the value is

              interpreted as the number of seconds to  wait  for input  after

              issuing  the  primary prompt.  Bash terminates after waiting for

              that number of seconds if input does not arrive.

       TMPDIR If set, bash uses its value as the name of a directory in  which

              bash creates temporary files for the shell's use.


              This variable controls how the shell interacts with the user and

              job control.  If this variable is set, single word  simple  com‐

              mands without redirections are treated as candidates for resump‐

              tion of an existing stopped job.  There is no ambiguity allowed;

              if  there  is more than one job beginning with the string typed,

              the job most recently accessed  is  selected.   The  name  of  a

              stopped  job, in this context, is the command line used to start

              it.  If set to the value exact, the string supplied  must  match

              the  name  of  a  stopped  job exactly; if set to substring, the

              string supplied needs to match a substring  of  the name  of  a

              stopped  job.  The substring value provides functionality analo‐

              gous to the %?  job identifier (see JOB CONTROL below).  If  set

              to  any  other  value, the supplied string must be a prefix of a

              stopped job's name; this provides functionality analogous to the

              %string job identifier.


              The  two or three characters which control history expansion and

              tokenization (see HISTORY EXPANSION below).  The first character

              is  the history expansion character, the character which signals

              the start of a history  expansion,  normally  `!'.   The  second

              character  is the quick substitution character, which is used as

              shorthand for re-running the previous command  entered,  substi‐

              tuting  one  string  for another in the command.  The default is

              `^'.  The optional third character is the character which  indi‐

              cates  that the remainder of the line is a comment when found as

              the first character of a word, normally `#'.  The  history  com‐

              ment character causes history substitution to be skipped for the

              remaining words on the line.  It does not necessarily cause  the

              shell parser to treat the rest of the line as a comment.



  • (1).BASH
       实例:echo $BASH_VERSION
       实例:  CDPATH="/tmp/A/B:/var/log"
              mkdir -p /tmp/A/B/C
              cd C  #默认cd会先在当前目录中查找是否存在C目录,若不存在则会在CDPATH变量指定的路径中查找,会进入/tmp/A/B/C
                echo "这个函数名为$FUNCNAME"
            hello  #结果显示为"这个函数名为hello"
       实例: HISTIGNORE=ls:ps:cd:t*:/&;
             for i in $MY;do
                echo $i
        作用:描述主机形态的GNU格式:  CPU-公司-系统
        实例:  echo $MACHTYPE  #i686-pc-linux-gnu
        实例:cd -  等价  cd $OLDPATH
        作用:设置次提示符号,默认为 >
        作用:设置select的提示符,默认为  #?
        实例:  echo $PWD 等价 pwd
        实例:echo $SECONDS
        作用:若该变量的值大于0的话,则bash会在等待TMOUT秒后还没有任何操作就会自动结束当前的bash shell.
              echo 'TMOUT=600'>>/etc/profile  #在10min内没有任何操作的话则自动注销当前系统
        实例:echo $$
        实例:echo $?
         实例:  top &;  #假设他的PID为2112
                echo $!  #结果为2112

以上是Bash内置变量的内容,更多 内置 的 的内容,请您使用右上方搜索功能获取相关信息。 1 2 3 4 
个人分类: linux shell
想对作者说点什么? 我来说一句