在終端上切換用戶

在終端上切換用戶

我正在使用命令切換用戶:

sudo su - userName

在我的終端上我總是有:

user@user directory $ (some command)

但是當我切換用戶時我只有:

$ (some commands)

很難解釋我的意思,但我是 Linux 新手,我沒有在其他問題中發現這一點。重新登入後如何保留 $ 符號之前的整個資料?

編輯:好的,它對我有用,我使用命令重新建立了使用者:adduser name

但我還有另一個問題。此命令會建立 /home 目錄,但它是空的。是否有一些指令可以為新使用者初始化/home?

答案1

但我還有另一個問題。此命令會建立 /home 目錄,但它是空的。是否有一些指令可以為新使用者初始化/home?

第二個問題的解決也就解決了第一個問題。您的新用戶的主目錄中沒有所有預設配置文件,因此新 shell 不會顯示花哨的提示等...

建立新使用者的標準命令使用以下內容初始化其主目錄/etc/skel

useradd -m

正如前面所說,某些發行版的預設設定是錯誤的,因此您可能需要添加更多選項:

useradd -m -s /bin/bash

有關更多詳細信息,請使用:

man useradd

有一些特定於發行版的高級工具。在對您的問題的評論中已經提到了在 Debian 等上使用的一個示例:

adduser

另外,/etc 中有一些配置可以使useradd行為為useradd -m,但在我看來,最好學習使用-malways 以避免受到不同安裝和發行版的影響。

根據上面的評論,可以使用-D參數設定預設值useradd

useradd -D -s /path/to/default/shell

答案2

您正在切換為普通用戶,並且該用戶沒有 $PS1 設置,但我認為您在基於 Debian 的系統中使用 useradd 命令添加該用戶,默認情況下您使用 useradd 的 shell 是 sh ,因此您可以嘗試:

chsh -s /bin/bash userName

這個指令會將 userName 的 shell 改為 /bin/bash。然後再嘗試為該用戶切換。如果您想在使用 useradd 新增某些使用者時變更 bash 的預設 shell,您可以變更檔案 /etc/default/useradd。

sed -i -e "s@\(^SHELL\).*@\1=/bin/bash@g" /etc/default/useradd

答案3

您正在從一個普通用戶(您)切換到另一個普通用戶,例如 joe,對吧?
以下是您的 shell 提示符,在環境變數 PS1 中定義:

user@user directory $

切換到 joe 後,您會看到 joe 的 shell 提示字元。而且他沒有配置在提示中顯示任何花哨的內容,因此只顯示預設提示,如下所示:

$

第二個是普通 shell 程式的預設值,您的可能是 linux 發行版的預設值。

嘗試將 PS1 設定為與您帳戶中的相同,它應該會有所幫助:

user@usersBox directory $ 回顯“$PS1”

然後

$ PS1=“…”
joe@usersBox directory $

將 ...... 替換為上面顯示的值echo

「@」後面的單字通常是電腦的名稱,因此我猜您在安裝過程中為電腦指定的名稱與您的使用者名稱相同。
為了在範例中減少混淆,我將電腦名稱更改為“usersBox”。

也許他故意刪除了你的變體。但很可能,這是由一些隨機的小技術問題引起的,如果你也在他的啟動文件中為他更改它,例如~/.bashrc 或類似的文件,這取決於他使用的shell 類型,他會沒事的。

相關內容