O comando sh usa o shell do usuário

1

O comando sh linux usa o shell atual do usuário, mesmo que não seja bash ? Por exemplo, digamos que o usuário bob esteja executando o csh. Se eu criar um script com funções e csh e tentar executá-lo com:

sh cshtestscript

Isso funcionará com o csh?

Então assuma outro uso joe está usando o bash. Se eu criar outro script com funções e script bash e tentar executá-lo com:

sh bashtestscript

Isso funcionará com o bash?

    
por Justin 21.06.2012 / 08:40

1 resposta

4

sh é apenas um executável padrão, que é sempre um shell específico. Não há mágica para detectar qual shell usar.

% whereis sh
sh: /bin/sh
% ls -l /bin/sh
lrwxrwxrwx 1 root root 4 Mar 29 11:53 /bin/sh -> dash

Nos sistemas Ubuntu, /bin/sh é (por padrão) um link simbólico para o traço , que é um shell POSIX mínimo destinado ao uso não interativo. Se você executar sh cshtestscript em um sistema Ubuntu, ele tentará executar o script com traço.

A maneira correta de lidar com isso é adicionar um shebang ao script que indica a qual shell use, torne o script executável e sempre execute-o como ./cshtestscript .

#!/bin/csh
    
por 21.06.2012 / 08:46