~/.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 是什麼,「骨架」目錄的全部內容/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


參考:

相關內容