O que acontecerá se eu colocar #! / bin / bash dentro de um script mas usar o ksh para o script? [duplicado]

0

O operador shebang é usado para dizer qual shell será usado para executar o script. o que acontecerá no seguinte caso:

#!/bin/bash

se eu digitar 'ksh script_name', o que acontecerá?

    
por Kishan Kumar 12.05.2018 / 07:00

2 respostas

5

Se você inserir ksh script_name , ele executará ksh com o argumento script_name . Isso significa que será executado por ksh. O shebang só importa ao executar o script explicitamente (por exemplo, ./script_name ).

    
por 12.05.2018 / 07:05
4

Resposta curta : O ksh executará o script e tratará #!/bin/bash como um comentário.

Explicação : sempre que qualquer executável for chamado para ser executado, bash ou qualquer chamada de shell exec() system call

exec() carrega o arquivo e verifica os primeiros 16 bits do arquivo para ver qual formato executável ele possui. Se encontrar #! , ele usa o resto da primeira linha do arquivo para encontrar qual programa deve ser lançado e fornece o nome do arquivo que ele estava tentando iniciar (o script) como o último argumento para o programa do interpretador.

e é assim que o interpretador especificado no shebang executa o script

mas quando você já especificou ksh e fornece o argumento, exec não estará procurando por shebang, mas o shell encontrará o binário da variável $PATH para carregar o binário e fornecerá o nome do arquivo como argumento para o binário.

    
por 12.05.2018 / 07:52

Tags