alias ou nano -B não funciona usando o sudo

1

Eu tenho um alias configurado

alias nano='nano -B'

para sempre fazer backups na alteração de arquivos.

Eu fiz isso em /home/<USER>/.bashrc e em /root/.bashrc .

Funciona se eu usar

nano someFile

como <USER> ou root .

Mas quando eu uso

sudo nano someFile

como <USER> backups não são feitos. (Eu esperaria encontrar someFiles~ na mesma pasta)

Existe um .bashrc adicional ou algo assim para sudo onde eu tenho que adicionar este alias ?

    
por derHugo 09.11.2017 / 13:47

1 resposta

1

Os aliases do seu ID de usuário não são usados via sudo

  • Você pode ou não querer usar o truque vinculado nos comentários.

  • Pode haver motivos para não ter aliases ou outros aliases para root .

    Esses aliases podem ser armazenados em /root/.bashrc , como você já sabe. Eles podem ser usados quando você executa interativamente no prompt raiz # após

    sudo -i  # activates root's aliases
    

mas eles não são ativados quando seguidos pelo alias na linha de comando

    sudo -i <specific alias>  # does not activate root's aliases
    sudo -H <specific alias>  # does not activate root's aliases

Exemplos:

$ LANG=C sudo -i

root@xenial32:~# alias
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l='ls -CF'
alias la='ls -A'
alias ll='ls -alF'
alias ls='ls --color=auto'

root@xenial32:~# grep -e ^alias -e \ alias /root/.bashrc
# enable color support of ls and also add handy aliases
    alias ls='ls --color=auto'
    alias grep='grep --color=auto'
    alias fgrep='fgrep --color=auto'
    alias egrep='egrep --color=auto'
# some more ls aliases
alias ll='ls -alF'
alias la='ls -A'
alias l='ls -CF'

Usando um dos aliases de root

root@xenial32:~# l
bin@  extractor.log  logfile.tar  mkusb.log

root@xenial32:~# exit
logout

sudodus@xenial32 ~ $ LANG=C sudo -i l
-bash: l: command not found

[127] sudodus@xenial32 ~ $ LANG=C sudo -H l
sudo: l: command not found

[1] sudodus@xenial32 ~ $ LANG=C sudo -i alias
sudodus@xenial32 ~ $ 

Eu não usaria alias sudo='sudo -i' porque

  • existe o risco de você esquecer que tem privilégios de superusuário e pode fazer coisas que você deve fazer apenas com privilégios normais. Em outras palavras, eu diria que ele derrota o propósito de sudo de ir sempre ao prompt root

  • um alias não funciona na linha de comando com sudo -i <specific alias>

  • geralmente é eficiente usar sudo com as configurações padrão dos comandos de modo de texto

  • para comandos da GUI Eu recomendaria sudo -H ou gksudo

por sudodus 09.11.2017 / 19:31