我阅读了一些关于 Linux 启动等方面的资料,并注意到在我的主目录中没有一个文件夹profile.d
:
/home/user/profile.d/ # Doesn't exists
也不是文件.bash_profile
:
/home/user/.bash_profile # Doesn't exists
是否有一个原因?
Ubuntu 15.04,gnome
答案1
简短回答:沒有問題。
有许多初始化用户文件,因为用户可以决定以多种不同的方式登录计算机帐户,从控制台,使用交互式或非交互式 shell,使用不同类型的 shell。这不是所有用户的特权,但需要保持向后兼容性它已经变得复杂了一点这些事。 :-)
目录
profile.d
不应该在你的主目录下:
/etc/profile.d
包含特定于应用程序的启动文件的脚本,这些脚本也会在启动时由 shell 执行。它是对所有用户都有效的目录,因此它会在路径下创建,/etc/
而不是在每个用户主目录下创建。该文件
~/.bash_profile
是个人初始化文件之一,当其存在时,存储在每个用户主目录中。但它的存在并不是必需的。它应该包含启动登录 shell 时要运行的 bash 特定的命令(~/.profile
也可以从不同的 shell 读取,这些 shell 通常理解与 bash 不同的语法)。
阅读更多INVOCATION
内容man bash
当 bash 作为交互式登录 shell 调用时 (...)它首先从文件中读取并执行命令
/etc/profile
,如果该文件存在。
读取该文件后,它会查找~/.bash_profile
、~/.bash_login
和~/.profile
,以该顺序,并读和 从第一个存在且可读的命令开始执行。
因此,如果您有一个~/.bash_profile
文件,它将不会被读取~/.profile
,如果没有在其他文件之一中调用(或获取)。
注意
当启动非登录 shell 的交互式 shell 时,bash 将从
/etc/bash.bashrc
和读取并执行命令~/.bashrc
(如果这些文件存在)。
从 Ubuntu 12 的某个版本(当然还有 13.10)中.profile
获取~/.bashrc
。
当运行登录 shell 时(比如
ssh
进入机器时),这可能会导致用户不希望出现的意外行为~/.bashrc
。
参考:
- 在 Bash(不太)初学者指南中,关于Shell 初始化文件
- 为什么 Ubuntu 默认的 ~/.profile 会来源 ~/.bashrc?