~/.bashrc 文件是在什么时候创建的?

~/.bashrc 文件是在什么时候创建的?

例如,如果我要运行命令adduser test,在创建用户主目录时是否会自动创建 .bashrc test?如果它不是在创建用户时创建的,那么在什么条件下会创建它?

另外,如果我将 .bashrc 文件添加到用户的主目录,它会被操作系统覆盖吗?

提前致谢。

答案1

在大多数情况下,初始用户文件(包括.bashrc)是在创建用户时创建的。它们是存储在名为的“骨架”目录中的文件的副本/etc/skel。有两个主要命令:

  • useradd是后端命令,如果直接使用它(不带任何选项),只会创建一个系统用户(及其组):

    $ sudo useradd new-user
    $ ls -la /home/new-user/
    ls: cannot access '/home/new-user/': No such file or directory
    
    • useradd/etc/skel如果-m --create-home提供了选项,将创建一个主目录并用副本填充它。感谢此评论致@jwodder。

    • 该选项-s --shell将更改新用户的登录 shell 的名称。无论新用户的登录 shell 是什么,“skeletal”目录的全部内容/etc/skel都将填充到新用户的主目录中。

    • 可以使用该选项定义不同的“骨架”目录-k --create-home

    • 该命令的配置文件是/etc/default/useradd

  • adduser是用户友好且交互的前端useradd。此命令将默认从复制/etc/skel到用户$HOME目录:

    $ sudo adduser new-user
    Adding user `new-user' ...
    Adding new group `new-user' (1002) ...
    Adding new user `new-user' (1002) with group `new-user' ...
    Creating home directory `/home/new-user' ...
    Copying files from `/etc/skel' ...
    Enter new UNIX password:
    Retype new UNIX password:
    passwd: password updated successfully
    Changing the user information for new-user
    Enter the new value, or press ENTER for the default
            Full Name []: New User
            Room Number []:
            Work Phone []:
            Home Phone []:
            Other []:
    Is the information correct? [Y/n]
    
    $ ls -a /home/new-user/
    .   ..   .bash_logout   .bashrc   .config   examples.desktop   .profile   .Xdefaults
    
    • 该命令的配置文件是/etc/adduser.conf

    • 新用户的登录 shell 的默认值由变量 决定DSHELL=。也可以通过选项 指定--shell。无论新用户的登录 shell 是什么,“骨架”目录的全部内容/etc/skel都将填充到新用户的主目录中。

    • 此文件中的变量SKEL=指定包含“骨架”用户文件的默认目录。

    • 该选项--no-create-home将强制命令adduser不创建用户主目录,相应地,“骨架”目录的内容将不会被复制。

    • 如果使用一个非选项参数和--system选项调用,adduser将添加系统用户...主目录的创建规则与普通用户相同。新的系统用户将拥有 shell /bin/false(除非用选项覆盖--shell),并且登录被禁用。骨架配置文件未被复制。 ...来自手册页。


此外,使用任何 GUI 工具创建用户时User Accounts,其结果与命令的结果相同adduser


参考:

相关内容