Peço desculpas antecipadamente se esta pergunta vai incomodar todo mundo, como eu aprecio, já foi feita de várias maneiras várias vezes antes. Tenha certeza de que li os arquivos e tentei pelo menos algumas das sugestões, mas ainda não consigo resolver o problema (simples). Espero que alguém possa dar uma resposta e eu possa me sentir adequadamente humilhado. Para sua informação, para evitar qualquer ambiguidade, usarei caminhos absolutos em vez de relativos.
Quando faço login, faço isso como usuário adam
. Os aliases /Users/adam/.bash_profile
estão carregados e eu posso usá-los imediatamente após puxar um terminal. Eu não uso um .bashrc
arquivo e tudo bem.
De vez em quando, eu mudo para root digitando su
no terminal e digitando minha senha. O prompt muda e agora eu sou o usuário root. Minha pergunta é a seguinte: imediatamente após tornar-se root, meu perfil de bash de raiz pode ser carregado sem que eu precise fornecer manualmente o arquivo de perfil? A razão pela qual sei que isso não acontece automaticamente é porque tenho os mesmos aliases no meu arquivo de perfil raiz e no meu /Users/adam/.bash_profile
. Depois de se tornar usuário root, a menos que eu digite source [root_profile_file]
, eles não funcionam. Tentei configurar as seguintes permutações e depois mudar para o root através do terminal, mas nenhuma delas cria automaticamente o perfil / aliases (observe, não tenho nenhuma das opções abaixo configuradas simultaneamente, por isso acho que não ' estou confundindo o sistema):
Opção 1: coloque meus aliases em/etc/profile
Opção 2:
- em
/etc/profile
, inserção[ -r /etc/bashrc ] && . /etc/bashrc
- colocar meus apelidos
/etc/bashrc
Opção 3:
- em
/etc/bash_profile
, inserção[ -r /etc/bashrc ] && . /etc/bashrc
- colocar meus apelidos
/etc/bashrc
Opção 4: colocar meus apelidos em/var/root/.profile
Opção 5:
- em
/var/root/.profile
, inserção[ -r /var/root/.bashrc ] && . /var/root/.bashrc
- colocar meus apelidos
/var/root/.bashrc
Opção 6:
- em
/var/root/.bash_profile
, inserção[ -r /var/root/.bashrc ] && . /var/root/.bashrc
- colocar meus apelidos
/var/root/.bashrc
Observe que, com qualquer uma das opções acima, se eu alternar para raiz e digitar source root_profile_file
os aliases são carregados, mas somente se eu realmente fornecer o arquivo manualmente. Talvez eu tenha entendido totalmente como o bash funciona e não seja possível obter um arquivo de perfil automaticamente depois de mudar para o root, mas espero que exista uma solução simples. Agradecemos antecipadamente a qualquer pessoa que tenha tomado o tempo necessário para ler esta mensagem.
su
nem trabalhar comoroot
. Existesudo
para esse fim, ou você pode trabalhar de tal maneira que não exija privilégios de root.Na verdade, os usos de root
/bin/sh
(shell bourne antigo).bash_profile
e.bashrc
são lidos pelo bash.Torna-se complicado, pois esses arquivos podem usar funcionalidades não disponíveis no
sh
. Mesmo se vocêsource .bashrc
ousource .bash_profile
você ainda tiver algum problema com funções complexas, por exemplo.Uma maneira de resolver isso é executar
para mudar
root
o shell parabash
.fonte
/bin/sh
usa/var/root/.profile
arquivo. Crédito para resposta deQuando eu absolutamente preciso, eu
sudo bash
que me enraíza, mas com o ambiente de JRobert. Meu .bashrc contém:, para fazer com que o prompt de raiz me olhe de vermelho para enfatizar que agora estou (mais) vulnerável ao meu próprio [escolha uma: ousadia, burrice, tendências dos dedos gordos, falta de vontade de seguir bons conselhos, até s.creek - não deixe cair a raquete].
fonte
Estou usando
sudo -i
para alternar para o usuário root. Nesse caso, a configuração do shell é lida/var/root/.profile
.fonte
Em geral, aconselho contra
su
, pois é perigoso, basta procurá-lo e você sabe o porquê. Na sua pergunta, a conta root funciona da mesma maneira que a sua conta: ela fornece ~ / .bash_profile e / ou ~ / .bashrc. Não sei qual, mas minha intuição se inclina para ~ / .bashrc , então você pode tentar colocar seus apelidos lá. Aqui está uma sugestão:fonte
sudo dscl . -change /Users/root UserShell /bin/sh /bin/bash
Só isso funciona! Tentei colocar meuexport PS1=...
arquivo em qualquer um desses arquivos acima. / etc / profile, / etc / bashrc /var/root/.bashrc /var/root/.profile /var/root/.bash_profile.De todos esses arquivos
/bin/sh
, o shell não lê informações! (somente bash) (Mac OS El Capitan). E eu tive que mudar o shell para o bash.Também
"su -"
funciona também. (com este shell está lendo o/var/root/.profile
arquivo)fonte
Uma maneira de resolver isso é executar o seguinte para alternar o shell do root para o bash:
Esta solução também corrigiu meu problema.
fonte
se você tiver apenas um usuário 'padrão' e o usuário raiz, poderá colocar
alias su="su -"
.bash_profile do usuário 'padrão' e obter o efeito desejado. Funciona e sem coisas hacky.fonte