
我正在使用命令切換用戶:
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
,但在我看來,最好學習使用-m
always 以避免受到不同安裝和發行版的影響。
根據上面的評論,可以使用-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 類型,他會沒事的。