![사용자를 저장해 보세요](https://linux55.com/image/211989/%EC%82%AC%EC%9A%A9%EC%9E%90%EB%A5%BC%20%EC%A0%80%EC%9E%A5%ED%95%B4%20%EB%B3%B4%EC%84%B8%EC%9A%94.png)
질문에서 알 수 있듯이 사용자를 저장하려고 합니다. 내가 그렇게 하고 싶었다면. 내가 할 수 있을까?
username = $USER
스크립트 시작 부분에 있거나 이 문제를 해결할 다른 방법이 있습니까? 이렇게 하는 이유는 나중에 루트가 될 예정이고 이전 사용자 쉘을 설정하고 싶기 때문입니다. 나는 bash를 사용하는 Fedora Linux를 사용하고 있지만 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.
답변1
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""
echo 를 원할 것 ~/.zshrc
입니다 . 물론 이것은 실행할 때마다 이 줄을 계속 추가하기 때문에 매우 나쁜 생각이므로 에코하기 전에 해당 줄이 있는지 확인하는 것이 좋습니다.alias vim=nvim
alias vim="nvim"
~/.zshrc
다음으로 실제로 를 SUDO_USER
사용하여 원래 사용자 이름을 얻을 수 있습니다. 그러나 이는 sudo -i
쉘이 종료될 때까지 다른 명령이 실행되지 않으므로 의미가 없습니다 sudo -i
. 인증만 하고 싶다면 sudo
비밀번호를 몇 초라도 기억하도록 설정하지 않는 이상 한 번만 하면 됩니다 (그러나 sudo -i
더 좋지는 않습니다). 바라보다https://unix.stackexchange.com/a/579447/22222비밀번호를 두 번 이상 입력하지 않아도 되도록 시간 초과를 변경하는 방법에 대한 sudo
세부정보입니다 .
마지막으로 실제로 사용자를 저장할 필요가 없습니다. sudo를 사용하여 일부 특정 명령을 실행하면(좋습니다!) chsh
어쨌든 원래 사용자로 실행됩니다. 또한 설치 스크립트는 이미 zsh를 기본 셸로 설정하는 기능을 제공하므로 ohmyzsh
해당 명령이 전혀 필요하지 않습니다.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