Por que passar o argumento para vi como o próprio vi? [fechadas]

1

Qual é a razão por trás de passar o primeiro argumento para vi como o próprio vi como o seguinte:

/bin/vi vi

Por que não escrever apenas:

/bin/vi

A única diferença que tenho visto entre os dois comandos é que executar vi sem vi quando o argumento abre vim , enquanto se eu forneço vi como um argumento, ele não faz isso. / p>

O que está acontecendo aqui?

    
por ng.newbie 02.02.2018 / 13:00

2 respostas

3

execl segue o caminho do comando a ser executado, seguido pelo argumentos;

The first argument, by convention, should point to the filename associated with the file being executed.

é por isso que o primeiro argumento é "vi" .

Você pode pensar nisso como especificando, por um lado, o caminho do comando e, separadamente, o array argv que o programa recebe (estou simplificando um pouco aqui). Cabe ao autor da chamada especificar o que o argv[0] do destinatário irá conter.

Os programas podem usar argv[0] para ajustar seu comportamento; Como você viu, o Vim se comporta como o Vi se for invocado como vi . Outro exemplo é busybox , que implementa uma ampla variedade de comandos em um único binário.

    
por 02.02.2018 / 13:14
2

Se você escrever, na linha de comando de um shell padrão ou compatível com o padrão, o comando:

/bin/vi vi

o shell executará /bin/vi com o argumento vi . Se você correr

/bin/vi

em vez disso, o shell executará apenas /bin/vi .

Na verdade, isso é uma simplificação. No nível de chamada do sistema, o primeiro executará /bin/vi com os argumentos /bin/vi e vi e o segundo apenas /bin/vi . Normalmente, ignoramos o argumento "zeroth", ele apenas contém o nome do comando.

Agora, não tenho /bin/vi , mas /usr/bin/vi , e é uma versão do VIM. Correndo

/usr/bin/vi vi

diz para abrir o arquivo chamado vi no diretório atual. Correndo

/usr/bin/vi

apenas diz para iniciar, sem nome de arquivo, então ele abre um buffer sem nome. Nesse caso, pelo menos esse VIM em particular também imprime uma saudação como a seguinte:

~                               VIM - Vi IMproved
~
~                                 version 8.0.707
~                           by Bram Moolenaar et al.
~            Modified by [email protected]
~                  Vim is open source and freely distributable

(continua com alguns comandos úteis como :q e :help .)

Algumas outras versões do vi obviamente não imprimem esse banner.

    
por 02.02.2018 / 14:10