bash如何处执行启动文件 --节选自 man bash

节选自 man  bash:      
GNU bash,版本 4.3.42(4)-release (x86_64-unknown-cygwin)

The following paragraphs describe how bash executes its startup files.
If any of the files exist but cannot be read, bash reports an error.
Tildes are expanded in filenames as described below under Tilde Expan‐
sion in the EXPANSION section。


接下来的段落描述bash如何执行它的启动文件。
如果任何一个文件存在,但不能被读取,bash报告一个错误。
文件名的波浪符号~会按照"扩展部分"的"波浪扩展"的描述进行扩展。


When bash is invoked as an interactive login shell, or as a non-inter‐
active shell with the --login option, it first reads and executes com‐
mands from the file /etc/profile, if that file exists. After reading
that file, it looks for ~/.bash_profile, ~/.bash_login, and ~/.profile,
in that order, and reads and executes commands from the first one that
exists and is readable. The --noprofile option may be used when the
shell is started to inhibit this behavior.


当bash以--login参数作为一个交互式登录shell被调用,或者作为一个非交互式登录shell被调用的时候,如果/etc/profile存在,它首先读取和执行/etc/profile里面的命令。读取/etc/profile后,bash会在~/.bash_profile,~/.bash_login和~/.profile按顺序寻找,找到第一个存在并且可读的文件,读取并执行其中的命令。--noprofile选项用于禁止这样的特性。




When a login shell exits, bash reads and executes commands from the
file ~/.bash_logout, if it exists.


当一个登录shell退出的时候,如果~/.bash_logout存在,bash会读取和执行~/.bash_logout。


When an interactive shell that is not a login shell is started, bash
reads and executes commands from ~/.bashrc, if that file exists. This
may be inhibited by using the --norc option. The --rcfile file option
will force bash to read and execute commands from file instead of
~/.bashrc.


当一个交互式的非登录shell启动的时候,如果~/.bashrc存在,bash
会读取和执行~/.bashrc。--norc选项会禁止这样的特性。--rcfile选项会
强制bash用指定的文件代替~/.bashrc读取和执行命令。


 When  bash  is  started  non-interactively,  to run a shell script, for
       example, it looks for the variable BASH_ENV in the environment, expands
       its  value if it appears there, and uses the expanded value as the name
       of a file to read and execute.  Bash behaves as if the  following  com‐
       mand were executed:
              if [ -n "$BASH_ENV" ]; then . "$BASH_ENV"; fi
       but  the value of the PATH variable is not used to search for the file‐
       name.


     当bash以非交互式启动,比如执行一个脚本,它查找环境变量BASH_ENV,
如果查找到了,就会扩展BASH_ENV的值作为文件名,然后读取和执行这个文件。
bash的行为就像执行下面的命令:
           if [ -n "$BASH_ENV" ];then . "$BASH_ENV";fi
但是搜索文件名的时候,不会使用PATH变量的值。


      If bash is invoked with the name sh, it tries to mimic the startup behavior of historical versions of sh as closely as possible, while  conforming  to  the
       POSIX standard as well.  When invoked as an interactive login shell, or a non-interactive shell with the --login option, it first attempts to read and exe‐
       cute commands from /etc/profile and ~/.profile, in that order.  The --noprofile option may be used to inhibit this behavior.  When invoked as  an  interac‐
       tive shell with the name sh, bash looks for the variable ENV, expands its value if it is defined, and uses the expanded value as the name of a file to read
       and execute.  Since a shell invoked as sh does not attempt to read and execute commands from any other startup files, the --rcfile option has no effect.  A
       non-interactive  shell  invoked  with  the  name sh does not attempt to read any other startup files.  When invoked as sh, bash enters posix mode after the
       startup files are read.


       When bash is started in posix mode, as with the --posix command line option, it follows the POSIX standard for startup files.  In  this  mode,  interactive
       shells expand the ENV variable and commands are read and executed from the file whose name is the expanded value.  No other startup files are read.


       Bash  attempts  to  determine  when it is being run with its standard input connected to a network connection, as when executed by the remote shell daemon,
       usually rshd, or the secure shell daemon sshd.  If bash determines it is being run in this fashion, it reads and executes commands from ~/.bashrc, if  that
       file exists and is readable.  It will not do this if invoked as sh.  The --norc option may be used to inhibit this behavior, and the --rcfile option may be
       used to force another file to be read, but rshd does not generally invoke the shell with those options or allow them to be specified.


       If the shell is started with the effective user (group) id not equal to the real user (group) id, and the -p option is not supplied, no startup  files  are
       read, shell functions are not inherited from the environment, the SHELLOPTS, BASHOPTS, CDPATH, and GLOBIGNORE variables, if they appear in the environment,
       are ignored, and the effective user id is set to the real user id.  If the -p option is supplied at invocation, the startup behavior is the same,  but  the
       effective user id is not reset.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值