为了正常的体验网站,请在浏览器设置里面开启Javascript功能!
首页 > 登录shell_非登录shell

登录shell_非登录shell

2018-03-14 25页 doc 80KB 8阅读

用户头像

is_036899

暂无简介

举报
登录shell_非登录shell登录shell_非登录shell .bash_profile .bashrc profile 文件的作用的执行顺序 登陆shell与交互式非登陆shell的区别 1.登录shell 所谓登录shell,指的是当用户登录系统时所取的那个 shell。登录shell属于交互式shell。 登录shell将查找4个不同的启动文件来处理其中的命令。 bash shell处理文件的顺序如下: 1: /etc/profile 2:/etc/profile.d等待配置文件 3: $HOME/.bash_profile 4...
登录shell_非登录shell
登录shell_非登录shell .bash_profile .bashrc profile 文件的作用的执行顺序 登陆shell与交互式非登陆shell的区别 1.登录shell 所谓登录shell,指的是当用户登录系统时所取的那个 shell。登录shell属于交互式shell。 登录shell将查找4个不同的启动文件来处理其中的命令。 bash shell处理文件的顺序如下: 1: /etc/profile 2:/etc/profile.d等待配置文件 3: $HOME/.bash_profile 4: $HOME/.bash_login 5 $HOME/.profile /etc /profile是bash shell在系统上的主默认启动文 件,系统上 每一个用户在登陆时都将执行此文件。 通过设置这个文件, 超级用户可以为全系统内的所有bash用户建立默认特征。不同 Linux版本在此文件放置的命令不尽相同, 在redflag中,该文件设置了几个重要的变量, 如:PATH USER LOGNAME MAIL HOSTNAME HISTSIZE INPUTRC,详情可以查看具体的文件。 其余3个文件具备相同的功能——提供特定于用户的启动文件。大多 数Linux版本只使用其中之一。如:RedFlag使用.bash_profile ubuntu使用.profile . shell依次查找~/.bash_profile、 ~/.bash_login、 ~/.profile(~是用户主目录的速记符), 并执行它找到的首个文件中的命令。 可以将命令放置在这些文件中以覆盖掉/etc/profile文件中的默认设置。 也就是后面的文件可以覆盖或者修改前面的设置 。 2. 交互式非登录shell 如果启动了一个bash shell而没有等录系统(如在CLI提示符中键入bash), 则启动了一个交互式非登录shell. 而登录shell的初始化文件(比如.bash_profile)通常会运行这个文件。这样,登录shell和非登录shell都可以使用.bashrc中的命令。 如以X Window环境登录Linux时,在X环境所起动的终端,那些shell都是非登录shell. 在交互式非登录shell中并不执行前面提到的初始化文件中的命令。然而,交互式非登录shell从登录shell继承了由这些初始化文件设置的 shell变量。 (1) $HOME/.bashrc 交互式非登录shell执行~/.bashrc文件中的命令.在每次执行shell脚本时,都会重新读取这个文件,所以是最完整的。 但是万事都不是一样的,debain系列的是不同的,如ubuntu /etc/profile-->/etc/environment-->$HOME/.profile 要配置java等变量时,都/etc/environment中 bash again shell的启动文件 1.登录设立shell /etc/profile:shell 首先执行/etc/profile中的命令,超级用户可以为整个系统的用户建立默认配置 facilitar la producció, gestió d'enfortir, eines de desenvolupament proporcionen proves importants per quota de consum i d'emmagatzematge. 19 equipades amb principi és: basat en les característiques de producció i l'equip, estan equipats amb un conjunt de dues classes de maquinària, eines de transferència, un conjunt d'eines, ús d'eines personal de connexió, danyar pèrdua a càrrec de la responsable, sense una màquina eina treballadors de producció en principi estan equipats amb eines. Eines comunes, en principi, per la producció de la líder del grup és responsables, com el públic, no es poden realitzar cèntrica amb l'establiment sala botiga eina de comptes públics i endeutament. l'article 20 dels individus manera estan equipades amb les eines, ho farem estrictament control, eina imprescindible disponible, eines de préstecs temporals no utilitzats. Màquines eines, oficis i eines grup comunament utilitzades amb taula objecte està equipat amb equipades amb comú eines torn 1, Vernier 1-2, 2... Disc de bol del nombre en sèrie eina nom ferralla 14 estàndard en forma de Tap dent ganivet 1, col. lapse rematat i dividir dent 2 i dent llarga direcció és menys original longitud 2/5 15 la passar endoll clau dent ganivet pot referenciar amb ganivet de tipus eina maneta 16 dents afaitat Nota: molí de fulla de dents afaitat que altra eina complex, equivalent al negoci que fer nova eina i detecció de paràmetre de tecnologia també més, cada vorejada molí són per al càlcul, afaitat dent ganivet desgast de l'estàndard de tecnologia segons específica de condicions tècnic d'eina de secció de eina per determinar. 17 fitxer 1 i dent no agut, les 18 activitats patí de ~/.bash_profile,~/.bash_login,~/.profile:然后社shell执行这三个文件中找到的第一个,可以在该文件中为具体用户建立配置。 ,/.bash_logout:退出时执行 2.交互式非登录shell:该类社shell继承登录shell的所有配置并执行以下文件 /etc/bashrc:由~/.bashrc调用,可以在此建立全系统配置。 ~/.bashrc:然后运行该文件,可以在此为具体shell建立配置。.bash_profile通常也会调用该文件 3.非交互式shell(运行shell脚本的shell) 不执行初始化文件,从登录shell处继承配置。 可以在/etc/profile或者 ,/bash_profile中用ulimit -n 8192类似方法改变进程能打开的最大文件数 关于登录linux时,/etc/profile、~/.bash_profile等几个文件的执行过程 在登录Linux时要执行文件的过程如下: 在刚登录Linux时,首先启动 /etc/profile 文件,然后再启动用户目录下的 ~/.bash_profile、 ~/.bash_login或 ~/.profile文件中的其中一个,执行的顺序为:~/.bash_profile、 ~/.bash_login、 ~/.profile。如果 ~/.bash_profile文件存在的话,一般还会执行 ~/.bashrc文件。因为在 ~/.bash_profile文件中一般会有下面的代码: if [ -f ~/.bashrc ] ; then . ./bashrc fi ~/.bashrc中,一般还会有以下代码: if [ -f /etc/bashrc ] ; then . /bashrc fi 所以,~/.bashrc会调用 /etc/bashrc文件。最后,在退出shell时,还会执行 ~/.bash_logout文件。 执行顺序为:/etc/profile -> (~/.bash_profile | ~/.bash_login | ~/.profile) -> ~/.bashrc -> /etc/bashrc -> ~/.bash_logout 关于各个文件的作用域,在网上找到了以下说明: (1)/etc/profile: 此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行. 并从/etc/profile.d目录的配置文件中搜集shell的设置。 (2)/etc/bashrc: 为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取。 (3)~/.bash_profile: 每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次!默认情况下,他设置一些环境变量,执行用户的.bashrc文件。 (4)~/.bashrc: 该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该该文件被读取。 (5)~/.bash_logout:当每次退出系统(退出bash shell)时,执行该文件. 另 外,/etc/profile中设定的变量(全局)的可以作用于任何用户,而~/.bashrc等中设定的变量(局部)只能继承/etc/profile中的变量,他们是"父子"关系。 (6)~/.bash_profile 是交互式、login 方式进入 bash 运行的~/.bashrc 是交互式 non-login 方式进入 bash 运行的通常二者设置大致相同,所以通常前者会调用后者。 以下内容来自《Shell 設計入門》 , /etc/profile 由 root 所控管, 用來設定適合全體使用者的shell環境 , 若使用者自己覺得 /etc/profile 的設定, 並不合意, 可以修改自家目錄中的.bash_profile , 既然有了 .bash_profile, 為何要有 .bash_login 及 .profile ?這是因為有些人可能是從 Bourne shell移轉過來的, 那麼, 只要將 Bourne shell 主要的起動檔 .profile 移到自家目錄中, 放棄使用.bash_profile 及 .bash_login 即可繼續沿用以前的設定環境 , bash_login 存在理由或許和 c shell 有關, 但因為 bash 和 c shell 二者語法並不完全相容, 因此, 並不建議將 c shell 的啟動檔直 接移過 facilitar la producció, gestió d'enfortir, eines de desenvolupament proporcionen proves importants per quota de consum i d'emmagatzematge. 19 equipades amb principi és: basat en les característiques de producció i l'equip, estan equipats amb un conjunt de dues classes de maquinària, eines de transferència, un conjunt d'eines, ús d'eines personal de connexió, danyar pèrdua a càrrec de la responsable, sense una màquina eina treballadors de producció en principi estan equipats amb eines. Eines comunes, en principi, per la producció de la líder del grup és responsables, com el públic, no es poden realitzar cèntrica amb l'establiment sala botiga eina de comptes públics i endeutament. l'article 20 dels individus manera estan equipades amb les eines, ho farem estrictament control, eina imprescindible disponible, eines de préstecs temporals no utilitzats. Màquines eines, oficis i eines grup comunament utilitzades amb taula objecte està equipat amb equipades amb comú eines torn 1, Vernier 1-2, 2... Disc de bol del nombre en sèrie eina nom ferralla 14 estàndard en forma de Tap dent ganivet 1, col. lapse rematat i dividir dent 2 i dent llarga direcció és menys original longitud 2/5 15 la passar endoll clau dent ganivet pot referenciar amb ganivet de tipus eina maneta 16 dents afaitat Nota: molí de fulla de dents afaitat que altra eina complex, equivalent al negoci que fer nova eina i detecció de paràmetre de tecnologia també més, cada vorejada molí són per al càlcul, afaitat dent ganivet desgast de l'estàndard de tecnologia segons específica de condicions tècnic d'eina de secció de eina per determinar. 17 fitxer 1 i dent no agut, les 18 activitats patí de 登录Linux时/etc/profile、~/.bash_profile等几个文件的执行过程 在登录Linux时要执行文件的过程如下: 在刚登录Linux时,首先启动 /etc/profile 文件,然后再启动用户目录下的 ~/.bash_profile、 ~/.bash_login或 ~/.profile文件中的其中一个,执行的顺序为:~/.bash_profile、 ~/.bash_login、 ~/.profile。如果 ~/.bash_profile文件存在的话,一般还会执行 ~/.bashrc文件。因为在 ~/.bash_profile文件中一般会有下面的代码: if [ -f ~/.bashrc ] ; then . ./bashrc fi ~/.bashrc中,一般还会有以下代码: if [ -f /etc/bashrc ] ; then . /bashrc fi 所以,~/.bashrc会调用 /etc/bashrc文件。最后,在退出shell时,还会执行 ~/.bash_logout文件。 执 行顺序为:/etc/profile -> (~/.bash_profile | ~/.bash_login | ~/.profile) -> ~/.bashrc -> /etc/bashrc -> ~/.bash_logout 关于各个文件的作用域,在网上找到了以下说明: (1)/etc/profile: 此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行. 并从/etc/profile.d目录的配置文件中搜集shell的设置。 (2)/etc/bashrc: 为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取。 (3)~/.bash_profile: 每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次!默认情况下,他设置一些环境变量,执行用户的.bashrc文件。 (4)~/.bashrc: 该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该该文件被读取。 (5)~/.bash_logout: 当每次退出系统(退出bash shell)时,执行该文件. 另外,/etc/profile中设定的变量(全局)的可以作用于任何用户,而~/.bashrc等中设定的变量(局部)只能继承/etc /profile中的变量,他们是"父子"关系。 (6)~/.bash_profile 是交互式、login 方式进入 bash 运行的~/.bashrc 是交互式 non-login 方式进入 bash 运行的通常二者设置大致相同,所以通常前者会调用后者。 linux环境变量文件 关于linux环境变量文件 第一内容: etc/profile:此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行. 并从/etc/profile.d目录的配置文件中搜集shell的设置. /etc/bashrc:为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取. 第二内容: ~/.bash_profile:每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该 文件仅仅执行一次!默认情况下,他设置一些环境变量,执行用户的.bashrc文件. ~/.bashrc:该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该 该文件被读取. ~/.bash_profile 是交互式、login 方式进入 bash 运行的 ~/.bashrc 是交互式 non-login 方式进入 bash 运行的 通常二者设置大致相同,所以通常前者会调用后者。 /etc/profile中设定的变量(全局)的可以作用于任何用户,而 ~/.bashrc等中设定的变量(局部)只能继承/etc/profile中的变量,他们是\"父子\"关系. facilitar la producció, gestió d'enfortir, eines de desenvolupament proporcionen proves importants per quota de consum i d'emmagatzematge. 19 equipades amb principi és: basat en les característiques de producció i l'equip, estan equipats amb un conjunt de dues classes de maquinària, eines de transferència, un conjunt d'eines, ús d'eines personal de connexió, danyar pèrdua a càrrec de la responsable, sense una màquina eina treballadors de producció en principi estan equipats amb eines. Eines comunes, en principi, per la producció de la líder del grup és responsables, com el públic, no es poden realitzar cèntrica amb l'establiment sala botiga eina de comptes públics i endeutament. l'article 20 dels individus manera estan equipades amb les eines, ho farem estrictament control, eina imprescindible disponible, eines de préstecs temporals no utilitzats. Màquines eines, oficis i eines grup comunament utilitzades amb taula objecte està equipat amb equipades amb comú eines torn 1, Vernier 1-2, 2... Disc de bol del nombre en sèrie eina nom ferralla 14 estàndard en forma de Tap dent ganivet 1, col. lapse rematat i dividir dent 2 i dent llarga direcció és menys original longitud 2/5 15 la passar endoll clau dent ganivet pot referenciar amb ganivet de tipus eina maneta 16 dents afaitat Nota: molí de fulla de dents afaitat que altra eina complex, equivalent al negoci que fer nova eina i detecció de paràmetre de tecnologia també més, cada vorejada molí són per al càlcul, afaitat dent ganivet desgast de l'estàndard de tecnologia segons específica de condicions tècnic d'eina de secció de eina per determinar. 17 fitxer 1 i dent no agut, les 18 activitats patí de 第三内容: ~/.bash_logout:当每次退出系统(退出bash shell)时,执行该文件. 执扫顺序总结: /etc/profile------ ~/.bash_profile( ~/.bash_login或 ~/.profile(linux版本而定))-------~/.bashrc------/etc/bashrc------ ~/.bash_logout -------------------------------------------------------------------------------- 具体 在登录Linux时要执行文件的过程如下: 在刚登录Linux时,首先启动 /etc/profile 文件,然后再启动用户目录下的 ~/.bash_login或 ~/.profile文件中的其中一个(根据不同的linux~/.bash_profile、 操作系统的不同,命名不一样), 执行的顺序为:~/.bash_profile、 ~/.bash_login、 ~/.profile。 如果 ~/.bash_profile文件存在的话,一般还会执行 ~/.bashrc文件。 ~/.bash_profile文件中一般会有下面的代码: if [ -f ~/.bashrc ] ; then . ./bashrc fi ~/.bashrc中,一般还会有以下代码: if [ -f /etc/bashrc ] ; then . /bashrc fi 所以,~/.bashrc会调用 /etc/bashrc文件。最后,在退出shell时,还会执行 ~/.bash_logout文件。 执行顺序为:/etc/profile -> (~/.bash_profile | ~/.bash_login | ~/.profile) -> ~/.bashrc -> /etc/bashrc -> ~/.bash_logout 关于各个文件的作用域,在网上找到了以下说明: (1)/etc/profile: 此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行. 并从/etc/profile.d目录的配置文件中搜集shell的设置。 (2)/etc/bashrc: 为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取。 (3)~/.bash_profile: 每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次!默认情况下,他设置一些环境变量,执行用户的.bashrc文件。 (4)~/.bashrc: 该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该该文件被读取。 (5) ~/.bash_logout:当每次退出系统(退出bash shell)时,执行该文件. 另外,/etc/profile中设定的变量(全局)的可以作用于任何用户,而~/.bashrc等中设定的变量(局部)只能继承 /etc/profile中的变量,他们是"父子"关系。 (6)~/.bash_profile 是交互式、login 方式进入 bash 运行的~/.bashrc 是交互式 bash 运行的通常二者设置大致相同,所以通常前者会调用后者。 non-login 方式进入 /etc/profile和/etc/environment等各种环境变量设置文件的用处 先将export LANG=zh_CN加入/etc/profile ,退出系统重新登录,登录提示显示英文。 将/etc/profile 中的export LANG=zh_CN删除,将LNAG=zh_CN加入/etc/environment,退出系统重新登录,登录提示显示中文。 用户环境建立的过程中总是先执行/etc/profile然后在读取/etc/environment。为什么会有如上所叙的不同呢, 应该是先执行/etc/environment,后执行/etc/profile。 /etc/environment是设置整个系统的环境,而/etc/profile是设置所有用户的环境,前者与登录用户无关,后者与登录用户有关。 系统应用程序的执行与用户环境可以是无关的,但与系统环境是相关的,所以当你登录时,你看到的提示信息,象日期、时间信息的显示格式与系统环境的LANG是相关的,缺省LANG=en_US,如果系统环境LANG=zh_CN,则提示信息是中文的,否则是英文的。 对于用户的SHELL初始化而言是先执行/etc/profile,再读取文件/etc/environment.对整个系统而言是先执行/etc/environment。这样理解正确吗, /etc/enviroment --> /etc/profile --> $HOME/.profile -->$HOME/.env (如果存在) facilitar la producció, gestió d'enfortir, eines de desenvolupament proporcionen proves importants per quota de consum i d'emmagatzematge. 19 equipades amb principi és: basat en les característiques de producció i l'equip, estan equipats amb un conjunt de dues classes de maquinària, eines de transferència, un conjunt d'eines, ús d'eines personal de connexió, danyar pèrdua a càrrec de la responsable, sense una màquina eina treballadors de producció en principi estan equipats amb eines. Eines comunes, en principi, per la producció de la líder del grup és responsables, com el públic, no es poden realitzar cèntrica amb l'establiment sala botiga eina de comptes públics i endeutament. l'article 20 dels individus manera estan equipades amb les eines, ho farem estrictament control, eina imprescindible disponible, eines de préstecs temporals no utilitzats. Màquines eines, oficis i eines grup comunament utilitzades amb taula objecte està equipat amb equipades amb comú eines torn 1, Vernier 1-2, 2... Disc de bol del nombre en sèrie eina nom ferralla 14 estàndard en forma de Tap dent ganivet 1, col. lapse rematat i dividir dent 2 i dent llarga direcció és menys original longitud 2/5 15 la passar endoll clau dent ganivet pot referenciar amb ganivet de tipus eina maneta 16 dents afaitat Nota: molí de fulla de dents afaitat que altra eina complex, equivalent al negoci que fer nova eina i detecció de paràmetre de tecnologia també més, cada vorejada molí són per al càlcul, afaitat dent ganivet desgast de l'estàndard de tecnologia segons específica de condicions tècnic d'eina de secció de eina per determinar. 17 fitxer 1 i dent no agut, les 18 activitats patí de /etc/profile 是所有用户的环境变量 /etc/enviroment是系统的环境变量 登陆系统时shell读取的顺序应该是 /etc/profile ->/etc/enviroment -->$HOME/.profile -->$HOME/.env 原因应该是jtw所说的用户环境和系统环境的区别了 如果同一个变量在用户环境(/etc/profile)和系统环境(/etc/environment)有不同的值那应该是以用户环境为准了。 本文来自CSDN博客,转载请标明出处: Shell脚本和Shell的初始化 Shell脚本用source或者.来获得。 例: 假设文件ls.script在文件夹linux下,这个文件夹下还有个文件是example, [ireed@redhat linux]$ ls example ls.script 下面是ls.script的内容: [ireed@redhat linux]$ cat ls.script ls 对,也就是说ls.script的内容就一行是ls。 开始实验: [ireed@redhat linux]$ source ls.script example ls.script [ireed@redhat linux]$ ls example ls.script [ireed@redhat linux]$ . ls.script example ls.script [ireed@redhat linux]$ 我们看到获得ls.script与运行ls命令会得到同样的效果,都是显示linux文件夹下面的内容,如果你编辑其他的脚本文件,然后获得它,也是可以运行的。 登录Shell、非登录Shell、交互式Shell与非交互式Shell 登录Shell 交互式Shell 从虚拟控制台登录Shell 是 是 通过网络Shell到一台 远程机器上时登录Shell 是 是 X初始化Shell 是 是 X终端Shell 否 是 手动执行bash启动的子Shell 否 是 用在命令替换中的子Shell 否 否 被小括号分组的命令使用的子Shell 否 否 执行脚本时使用的子Shell 否 否 也就是说左边有"login:"的就是登录Shell否则就是非登录Shell;交互与非交互Shell也是很好区分的. 启动登录Shell时获得/etc/profile,/etc/profile.d/*.sh及~/.bash_profile; 每次Shell启动时获得/etc/bashrc和~/.bashrc; 每次Shell退出时获得~/.bash_logout 只有登录Shell可以获得/etc/profile和~/.bash_profile;而/etc/bashrc和~/.bashrc被所有Shell获得.前两个文件用来配置环境变量,只被初始化一次,后两个习惯上用于Shell的自定义,如别名和Shell选项. 注意对称,对于环境变量,有一个通用的启动文件(/etc/profile)和一个本地的启动文件(~/.bash_profile),前者可以被系统管理员用来配置系统范围,后者被个人用户自定义自己的环境;/etc/bashrc和~/.bashrc也类似. facilitar la producció, gestió d'enfortir, eines de desenvolupament proporcionen proves importants per quota de consum i d'emmagatzematge. 19 equipades amb principi és: basat en les característiques de producció i l'equip, estan equipats amb un conjunt de dues classes de maquinària, eines de transferència, un conjunt d'eines, ús d'eines personal de connexió, danyar pèrdua a càrrec de la responsable, sense una màquina eina treballadors de producció en principi estan equipats amb eines. Eines comunes, en principi, per la producció de la líder del grup és responsables, com el públic, no es poden realitzar cèntrica amb l'establiment sala botiga eina de comptes públics i endeutament. l'article 20 dels individus manera estan equipades amb les eines, ho farem estrictament control, eina imprescindible disponible, eines de préstecs temporals no utilitzats. Màquines eines, oficis i eines grup comunament utilitzades amb taula objecte està equipat amb equipades amb comú eines torn 1, Vernier 1-2, 2... Disc de bol del nombre en sèrie eina nom ferralla 14 estàndard en forma de Tap dent ganivet 1, col. lapse rematat i dividir dent 2 i dent llarga direcció és menys original longitud 2/5 15 la passar endoll clau dent ganivet pot referenciar amb ganivet de tipus eina maneta 16 dents afaitat Nota: molí de fulla de dents afaitat que altra eina complex, equivalent al negoci que fer nova eina i detecció de paràmetre de tecnologia també més, cada vorejada molí són per al càlcul, afaitat dent ganivet desgast de l'estàndard de tecnologia segons específica de condicions tècnic d'eina de secció de eina per determinar. 17 fitxer 1 i dent no agut, les 18 activitats patí de Linux C编程一站式学习 ://learn.akae.cn/media/ch31s04.html 全国嵌入式人才培训基地 4. bash启动脚本 上一页 下一页 第 31 章 Shell脚本 4. bash启动脚本 请点评 启动脚本是bash启动时自动执行的脚本。用户可以把一些环境变量的设置和alias、umask设置放在启动脚本中,这样每次启动Shell时这些设置都自动生效。思考一下,bash在执行启动脚本时是以fork子Shell方式执行的还是以source方式执行的, 启动bash的方法不同,执行启动脚本的步骤也不相同,具体可分为以下几种情况。 4.1. 作为交互登录Shell启动,或者使用--login参数启动 请点评 交互Shell是指用户在提示符下输命令的Shell而非执行脚本的Shell,登录Shell就是在 ssh从远程登输入用户名和密码登录后得到的Shell,比如从字符终端登录或者用telnet/录,但是从图形界面的窗口管理器登录之后会显示桌面而不会产生登录Shell(也不会执行启动脚本),在图形界面下打开终端窗口得到的Shell也不是登录Shell。 这样启动bash会自动执行以下脚本: 1. 首先执行/etc/profile,系统中每个用户登录时都要执行这个脚本,如果系统管理 员希望某个设置对所有用户都生效,可以写在这个脚本里 2. 然后依次查找当前用户主目录的~/.bash_profile、~/.bash_login和~/.profile 三个文件,找到第一个存在并且可读的文件来执行,如果希望某个设置只对当前用 户生效,可以写在这个脚本里,由于这个脚本在/etc/profile之后执行, /etc/profile设置的一些环境变量的值在这个脚本中可以修改,也就是说,当前用 户的设置可以覆盖(Override)系统中全局的设置。~/.profile这个启动脚本是sh 规定的,bash规定首先查找以~/.bash_开头的启动脚本,如果没有则执行 ~/.profile,是为了和sh保持一致。 3. 顺便一提,在退出登录时会执行~/.bash_logout脚本(如果它存在的话)。 4.2. 以交互非登录Shell启动 请点评 比如在图形界面下开一个终端窗口,或者在登录Shell提示符下再输入bash命令,就得到一个交互非登录的Shell,这种Shell在启动时自动执行~/.bashrc脚本。 为了使登录Shell也能自动执行~/.bashrc,通常在~/.bash_profile中调用~/.bashrc: if [ -f ~/.bashrc ]; then . ~/.bashrc fi 这几行的意思是如果~/.bashrc文件存在则source它。多数Linux发行版在创建帐户时会自动创建~/.bash_profile和~/.bashrc脚本,~/.bash_profile中通常都有上面这几行。所以,如果要在启动脚本中做某些设置,使它在图形终端窗口和字符终端的Shell中都起作用,最好就是在~/.bashrc中设置。 下面做一个实验,在~/.bashrc文件末尾添加一行(如果这个文件不存在就创建它): export PATH=$PATH:/home/akaedu 然后关掉终端窗口重新打开,或者从字符终端logout之后重新登录,现在主目录下的程序应该可以直接输程序名运行而不必输入路径了,例如: ~$ a.out 就可以了,而不必 ~$ ./a.out 为 什么登录Shell和非登录Shell的启动脚本要区分开呢,最初的是这样考虑的,如果从字符终端或者远程登录,那么登录Shell是该用户的所有其 它进程的父进程,也是其它子Shell的父进程,所以环境变量在登录Shell的启动脚本里设置一次就可以自动带到其它非登录Shell里,而Shell 的本地变量、函数、alias等设置没有办法带到子Shell里,需要每次启动非登录Shell时设置一遍,所以就需要有非登录Shell的启动脚本,所以一般来说在~/.bash_profile里设置环境变量,在~/.bashrc里设置本地变量、函数、alias等。如果你的Linux带有图形系统则不能这样设置,由于从图形界面的窗口管理器登录并不会产生登录Shell,所以环境变量也应该在~/.bashrc里设置。 4.3. 非交互启动 请点评 为执行脚本而fork出来的子Shell是非交互Shell,启动时执行的脚本文件由环境变量BASH_ENV定义,相当于自动执行以下命令: if [ -n "$BASH_ENV" ]; then . "$BASH_ENV"; fi 如果环境变量BASH_ENV的值不是空字符串,则把它的值当作启动脚本的文件名,source这个脚本。 4.4. 以sh命令启动 请点评 如果以sh命令启动bash,bash将模拟sh的行为,以~/.bash_开头的那些启动脚本就不认了。所以,如果作为交互登录Shell启动,或者使用--login参数启动,则依次执行以下脚本: 1. /etc/profile 2. ~/.profile facilitar la producció, gestió d'enfortir, eines de desenvolupament proporcionen proves importants per quota de consum i d'emmagatzematge. 19 equipades amb principi és: basat en les característiques de producció i l'equip, estan equipats amb un conjunt de dues classes de maquinària, eines de transferència, un conjunt d'eines, ús d'eines personal de connexió, danyar pèrdua a càrrec de la responsable, sense una màquina eina treballadors de producció en principi estan equipats amb eines. Eines comunes, en principi, per la producció de la líder del grup és responsables, com el públic, no es poden realitzar cèntrica amb l'establiment sala botiga eina de comptes públics i endeutament. l'article 20 dels individus manera estan equipades amb les eines, ho farem estrictament control, eina imprescindible disponible, eines de préstecs temporals no utilitzats. Màquines eines, oficis i eines grup comunament utilitzades amb taula objecte està equipat amb equipades amb comú eines torn 1, Vernier 1-2, 2... Disc de bol del nombre en sèrie eina nom ferralla 14 estàndard en forma de Tap dent ganivet 1, col. lapse rematat i dividir dent 2 i dent llarga direcció és menys original longitud 2/5 15 la passar endoll clau dent ganivet pot referenciar amb ganivet de tipus eina maneta 16 dents afaitat Nota: molí de fulla de dents afaitat que altra eina complex, equivalent al negoci que fer nova eina i detecció de paràmetre de tecnologia també més, cada vorejada molí són per al càlcul, afaitat dent ganivet desgast de l'estàndard de tecnologia segons específica de condicions tècnic d'eina de secció de eina per determinar. 17 fitxer 1 i dent no agut, les 18 activitats patí de 如果作为交互Shell启动,相当于自动执行以下命令: if [ -n "$ENV" ]; then . "$ENV"; fi 如果作为非交互Shell启动,则不执行任何启动脚本。通常我们写的Shell脚本都以#! /bin/sh开头,都属于这种方式。 上一页 上一级 下一页 3. Shell的基本语法 起始页 5. Shell脚本语法 全国嵌入式人才培训基地 交互式shell和非交互式shell、登录shell和非登录 也算写过一些Bash脚本的人了,不过对与这几个概念,还不是很清楚,于是恶补了一下。 交互 式shell和非交互式shell、登录shell和非登录shell的区别。 首先,这是两个不同的维度来划分的,一个是是否交互式,另 一个是是否登录。 交互式shell和非交互式shell 交互式模式就是shell等待你的输入, 并且立即执行你提交的命令。这种模式被称作交互式是因为shell与用户进行交互。这种模式也是大多数用户非常熟悉的:登录、执行一些命令、签退。当你签 退后,shell也终止了。 shell也可以运行在另外一种模式:非交互式模式,以shell script(非交互)方式执行。在这种模式 下,shell不与你进行交互,而是读取存放在文件中的命令,并且执行它们。当它读到文件的结尾,shell也就终止了。 chinaunix 论坛中关于登录shell与非登录shell、交互式shell与非交互式Shell的讨论: Login Shell:当init3时,mingetty spawn出登录提示符的时候,你输入帐号和密码进入了,出现了shell提示符,这个过程就是登录外壳; Interactive Shell:接下来你得到了一个像root@host />这样的提示符,你输入什么,它就解释出什么,这就是交互式外壳;你在当前Shell又fork了一个shell(bash),这个bash也是 交互式外壳。通常情况下interactive shell是login shell派生出来的。 Non Interactive Shell:你可能需要学习写一个bash script,用外部shell执行:bash script.sh,它(bash)从第一条命令执行到最后一条然后退出,不与你进行任何交互,它就是 非交互式外壳。 交互式非登录shell就是指你在Gnome图形界面中打开“终端”出来的那种窗口程序, 和登录shell 相比,它是“非登录”的,你并不需要输入用户名和密码, 和非交互式shell相比,这是“交互式”的,就像你说的那它:你输入什么,它就解释出什么 执行exit退出非登录shell状 态; 执行logout退出登录shell状态。 在登录shell里,确实只读取/etc/profile和~ /.bash_profile, ~/.bash_login, and ~/.profile按 顺序最先的一个,并执行其中的命令。除非被 --noprofile选项禁止了; 在非登录shell里,确实只读取 /etc/bash.bashrc和~/.bashrc facilitar la producció, gestió d'enfortir, eines de desenvolupament proporcionen proves importants per quota de consum i d'emmagatzematge. 19 equipades amb principi és: basat en les característiques de producció i l'equip, estan equipats amb un conjunt de dues classes de maquinària, eines de transferència, un conjunt d'eines, ús d'eines personal de connexió, danyar pèrdua a càrrec de la responsable, sense una màquina eina treballadors de producció en principi estan equipats amb eines. Eines comunes, en principi, per la producció de la líder del grup és responsables, com el públic, no es poden realitzar cèntrica amb l'establiment sala botiga eina de comptes públics i endeutament. l'article 20 dels individus manera estan equipades amb les eines, ho farem estrictament control, eina imprescindible disponible, eines de préstecs temporals no utilitzats. Màquines eines, oficis i eines grup comunament utilitzades amb taula objecte està equipat amb equipades amb comú eines torn 1, Vernier 1-2, 2... Disc de bol del nombre en sèrie eina nom ferralla 14 estàndard en forma de Tap dent ganivet 1, col. lapse rematat i dividir dent 2 i dent llarga direcció és menys original longitud 2/5 15 la passar endoll clau dent ganivet pot referenciar amb ganivet de tipus eina maneta 16 dents afaitat Nota: molí de fulla de dents afaitat que altra eina complex, equivalent al negoci que fer nova eina i detecció de paràmetre de tecnologia també més, cada vorejada molí són per al càlcul, afaitat dent ganivet desgast de l'estàndard de tecnologia segons específica de condicions tècnic d'eina de secció de eina per determinar. 17 fitxer 1 i dent no agut, les 18 activitats patí de
/
本文档为【登录shell_非登录shell】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
热门搜索

历史搜索

    清空历史搜索