amp*_*ent 48 bash login .profile bashrc
我想将我所有的登录配置集中在我的~/.bash_profile
. ~/.bashrc
默认情况下有一个那里,但我用一个~/.bash_profile
.
但是,当我登录时,在~/.bash_profile
获取源之前的某些内容并显示以下内容:
Linux ubnt10-dev1 2.6.32-38-server #83-Ubuntu SMP Wed Jan 4 11:26:59 UTC 2012 x86_64 GNU/Linux
Ubuntu 10.04.4 LTS
Welcome to the Ubuntu Server!
* Documentation: http://www.ubuntu.com/server/doc
System information as of Fri May 9 12:17:39 EDT 2014
System load: 0.01 Processes: 74
Usage of /: 5.5% of 18.58GB Users logged in: 0
Memory usage: 4% IP address for eth0: 123.x.x.x
Swap usage: 0%
Graph this data and manage this system at https://landscape.canonical.com/
New release 'precise' available.
Run 'do-release-upgrade' to upgrade to it.
Last login: Fri May 9 12:11:52 2014 from 123.x.x.x
Run Code Online (Sandbox Code Playgroud)
我想删除它,以便只~/.bash_profile
显示在我的获取中定义的我自己的初始问候语,但我不确定用户登录时获取/执行的脚本的逻辑/顺序。你能启发我吗?
作为奖励,我还想知道系统启动时自动采购/执行的顺序,而不仅仅是当用户通过登录启动会话时,尽管这对我来说现在不太重要。
ter*_*don 61
这有点复杂。首先,细节取决于您正在运行的外壳类型。要抄袭自己:
当您打开终端模拟器(gnome-terminal
例如)时,您正在执行所谓的交互式非登录shell。
当您从命令行登录计算机或运行诸如 之类的命令时su - username
,您正在运行交互式登录shell。
当您以图形方式登录时,您正在运行完全不同的东西。详细信息将取决于您的系统和图形环境,但一般来说,处理您的登录的是图形外壳。虽然许多图形外壳(包括 Ubuntu 默认)会读取/etc/profile
,但~/.profile
并非所有外壳都能读取。
最后,当您运行 shell 脚本时,它会在非交互式、非登录 shell 中运行。
bash 在启动时将读取的文件取决于它运行的 shell 的类型。以下是man bash
(强调我的)的 INVOCATION 部分的摘录:
当 bash 作为交互式登录 shell或作为具有 --login 选项的非交互式 shell调用时,它首先从文件/etc/profile读取并执行命令(如果该文件存在)。读取该文件后,它会按顺序查找~/.bash_profile、~/.bash_login 和 ~/.profile,并从第一个存在且可读的命令中读取和执行命令。当 shell 启动时可以使用 --noprofile 选项来禁止这种行为。
当一个交互的shell是不是登录shell 启动时,bash读取并执行命令/etc/bash.bashrc和〜/ .bashrc中,如果这些文件存在。这可以通过使用 --norc 选项来禁止。--rcfile 文件选项将强制 bash 从文件而不是 /etc/bash.bashrc 和 ~/.bashrc 读取和执行命令。
这些是初始化文件。您还/etc/environment
可以设置全局环境变量,但它是读取而不是来源(不执行其中的命令,但设置了变量定义)。
现在,你看到的问候又是另一回事了。这在 中设置/etc/motd
并通过 显示pam_motd
。如中所述man motd
:
/etc/motd 的内容在成功登录后由 pam_motd(8) 显示,但就在它执行登录 shell 之前。
缩写“motd”代表“今日消息”,这个文件在传统上一直用于这个目的(它需要的磁盘空间比发送给所有用户的邮件少得多)。
在 Debian GNU/Linux 上,还会显示 /run/motd.dynamic 的内容。该文件由 /etc/init.d/motd 在启动时生成。
要删除消息,只需清空/etc/motd
文件并确保/etc/init.d/motd
如果存在则不会生成任何内容。
无论如何,根据您显示的输出,您似乎正在通过ssh
这意味着您正在运行交互式登录 shell 登录,请参阅上文了解这意味着什么。因此,总而言之,您在登录时关心的事情是(按此顺序):
pam_motd
PAM 库的模块,显示/etc/motd
. 通过该pam_env
模块,它从/etc/environment
和设置环境变量~/.pam_environment
。/etc/profile
/etc/bash.bashrc
(默认的 Ubuntu/etc/profile
源/etc/bash.bashrc
)。~/.bash_profile
. 可以在此处读取的其他文件 (~/.profile
和~/.bash_login
) 由于~/.bash_profile
存在而被忽略。 归档时间: |
|
查看次数: |
46048 次 |
最近记录: |