Executando meu script de shell em vez do arquivo interno do Ubuntu

1

Eu tenho meu shell script pronto para ser executado.

Mas meu problema é quando eu preciso que o usuário execute meu script de shell e não o arquivo interno do Ubuntu

Por exemplo, eu quero que o usuário execute meu shell script passwd e não o passwd do Ubuntu em / usr / bin / passwd

Eu escrevi um apelido no .bashrc que se parece com isso

alias passwd='./passwd'

A minha pergunta é como faço com que o usuário execute meu passwd em vez do passwd do Ubuntu? Como faço para desativar o arquivo passwd real?

Pergunta fora do tópico, como eu cancelo o sudo?
Porque meu script de shell contém sudo que imprimirá a senha necessária na primeira execução.

    
por Unknown 23.08.2013 / 11:14

2 respostas

1

Você precisa fornecer o nome do alias, como alias passwd='/home/Unknown/bin/passwd' . Isso geralmente é feito por padrão para alguns comandos como ls ou grep , como alias ls='ls --color=auto' . Alguns antecedentes aqui .

Para executar o comando original e não o alias, você pode usar command passwd stuff-to-do .

Dito isto, a substituição de binários relacionados à segurança é uma ideia idiota.

EDITAR: .bashrc não é lido no shell não interativo por padrão, ou seja, ao executar um script, um shell usado pelo script não lê o arquivo .bashrc . Você pode usar uma função para isso em .bashrc e, em seguida, export , como:

passwd(){
    /home/Unknown/bin/passwd
}
export -f passwd

Eu não testei isso com passwd , mas deve funcionar.

Alguns dos detalhes vêm de esta pergunta ' s respostas.

    
por moon.musick 23.08.2013 / 11:37
0

Como dito nas respostas anteriores, a melhor prática é não nomear seu script com o mesmo nome de um arquivo / comando de sistema já existente.

Se você realmente precisar chamá-lo assim, talvez pelo menos adicione o .sh para diversificar um pouco, por exemplo chame-o de script 'passwd.sh' (em geral, também é uma prática recomendada para scripts de shell) para minimizar as chances de confusão.

Quanto à sua pergunta, sugiro criar um diretório bin em seu diretório inicial ou, se você tiver direitos, colocá-lo em / usr / local / bin e, em seguida, corrigir a variável PATH do usuário para que os scripts no diretório A localização escolhida é encontrada / acessível, por exemplo:

$ cd; mkdir bin
$ export PATH="$HOME/bin:/usr/local/bin:$PATH"

Note que a variável PATH já pode conter esses locais, é melhor verificar antecipadamente via:

$ echo $PATH
    
por Antonello Piemonte 23.08.2013 / 11:48