Acabei de iniciar um novo contrato e me deparei com um problema que nunca encontrei antes.
Seu banco de dados Oracle foi iniciado em um shell korn.
oracle:x:500:100:Oracle user:/home/oracle:/usr/bin/ksh
Eu tenho todos os meus scripts bash, não tenho ambiente de teste e adoro o bash para uso diário.
Eu tentei chamar o bash do .profile, mas isso fica confuso quando os scripts precisam de variáveis ambientais e outro shell é ativado.
Posso simplesmente editar /etc/passwd e iniciar um shell bash no login sem afetar um processo em execução?
O próprio banco de dados provavelmente não usaria muito o shell de login.
O shell de login não restringe seu uso
bash
para escrever scripts. A#!
linha - em um script informa ao shell qual interpretador usar para executar o script, e isso pode serbash
ouksh
oupython
ouperl
o que for apropriado para o script em particular.A única coisa para a qual isso faz diferença é o que é o shell de login quando você faz login como
oracle
usuário e onde quer que o shell de login possa ser usado (você deve ler o manual do seu banco de dados Oracle para ver onde isso pode estar, mas tanto quanto eu posso ver ,ksh
e são todos suportados).bash
csh
Pessoalmente, eu evitaria alterar o shell de login e, em vez disso, iniciaria manualmente um
bash
shell interativo a partir da linha de comando, se este for o shell que você gostaria de usar para trabalho interativo comooracle
usuário.Eu recomendaria fazer uma conta unix pessoal para uso regular (onde você pode usar o bash) e usar apenas a conta oracle quando necessário; isso irá ajudá-lo de quaisquer surpresas que possam surgir ao alterar a conta (ou invalidar documentos que a Oracle pode enviar a você sobre como fazer as coisas). Provavelmente não interromperá o processo em execução se você alterar o shell, apenas pode levar a surpresas no futuro.
Para a maior parte do trabalho DDL/DML que você pode querer fazer, você não precisa ser o usuário oracle; você pode usar sua conta pessoal.
Para responder com precisão à pergunta: claro, você pode alterar o shell do oracle sem afetar os processos atuais . Eu sugiro
chsh
em vez de editar /etc/passwd, no entanto.Considere os trabalhos cron (ou agendados de outra forma) que esperam ser executados como oracle em ksh. Considere também quaisquer tarefas que são geradas a partir de processos existentes que esperam executar ksh como seu shell de login.
Uma leitura rápida do Oracle® Database Quick Installation Guide 11g Release 1 (11.1) para Linux x86-64 indica algum suporte para shells diferentes de ksh, mas você precisaria configurar os perfis de shell necessários de acordo.
Eu reciclaria o aplicativo após essa alteração, para garantir que você recebesse tudo.
Pode ser mais fácil configurar ~/.bashrc e/ou ~/.bash_profile, então basta digitar
exec bash
quando estiver trabalhando interativamente.