試圖儲存使用者
因此,正如問題所暗示的那樣,我正在嘗試儲存使用者。如果我想那樣做。我可以嗎
username = $USER
在腳本的開頭還是有其他方法可以解決?我這樣做的原因是因為我後來成為 root,並且我想設置以前的使用者 shell。我在 Fedora Linux 上,使用 bash,但後來它切換到 zsh
這是我目前執行的:
#User types sudo password. sudo -i #Shell setup #Install ZSH sudo dnf install zsh -y #Install oh-my-zsh sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" #Install starship sudo dnf install starship #Export variables & aliases echo ~/.zshrc > "alias "vim"="nvim"" echo ~/.zshrc > "alias ".."="cd .."" echo ~/.zshrc > "alias "lsblk"="lsblk -e 7"" #Add it as the default prompt echo ~/.zshrc > "eval "$(starship init zsh)" # Change users shell to zsh chsh -s /bin/zsh $USERNAME``` #Username would be the non-root user that originally ran the script. Username is not defined because I don't know how to get the original user that ran the script before becoming root.
是的,您幾乎可以像顯示的那樣將變數保存在新變數中,但在
bash
和中都沒有空格zsh
:username=$USER
我不知道您要做什麼,因為問題中沒有資訊,但請注意
sudo
將SUDO_USER
變數設置$USER
為啟動時的值:$ sudo sh -c 'echo "user:$USER sudo_user:$SUDO_USER"' user:root sudo_user:terdon
現在您已經共享了腳本,您還需要修復一些其他問題。
echo ~/.zshrc > "alias "vim"="nvim""
會將字元串回顯~/.zshrc
到名為alias vim=nvim
. 大概,您想回alias vim="nvim"
顯~/.zshrc
。當然,這是一個非常非常糟糕的主意,因為每次執行時它都會繼續添加這條線,所以你可能想在回顯之前先檢查這條線是否存在。接下來,您確實可以使用
SUDO_USER
來獲取原始使用者名。但是,這是毫無意義的,因為在退出shellsudo -i
之前,不會執行任何其他命令。sudo -i
如果您只想進行身份驗證,則只需執行一次,除非您sudo
沒有設置為記住密碼幾秒鐘(但那樣sudo -i
不會更好)。有關如何更改超時的詳細資訊,請參閱https://unix.stackexchange.com/a/579447/22222sudo
,以便您無需多次輸入密碼。最後,您實際上不需要儲存使用者:您只需使用 sudo 執行一些特定的命令(好!),因此
chsh
無論如何都會以原始使用者身份執行。更重要的是,ohmyzsh
安裝腳本已經提供了使 zsh 成為您的預設 shell,因此您根本不需要該chsh
命令。把所有這些放在一起:
#!/bin/bash #Install ZSH sudo dnf install zsh -y #Install oh-my-zsh sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" #Install starship sudo dnf install starship #Export variables & aliases lines=("alias vim='nvim'" "alias ..='cd ..'" \ "alias lsblk='lsblk -e 7" \ "eval \"$(starship init zsh)\"" ) for line in "${lines[@]}"; do grep -q "$line" ~/.zshrc || printf '%s\n' "$line" >> ~/.zshrc done # Change user's shell to zsh. This isn't needed, you can simply answer # yes when prompted by the ohmyzsh installation script. chsh -s /bin/zsh $USER