Como eu configuro o shell de comando at para bash?

5

Como altero o shell de comando de sh para bash?

Ao executar at , recebo a mensagem warning: commands will be executed using /bin/sh :

at 23:33                                                              
warning: commands will be executed using /bin/sh

Como posso definir o shell padrão como /bin/bash em vez de /bin/sh

    
por user123456 03.10.2016 / 00:39

2 respostas

4

Olhando para man at , parece que não é possível alterar o shell.

No entanto, você poderia apenas lançar seus comandos dentro de um shell Bash dentro do shell SH do at , desta forma:

at 01:23 <<< "bash -c 'notify-send \"running from $SHELL\"'"
    
por Byte Commander 03.10.2016 / 01:00
6

Você não pode alterar o shell padrão de at , ele é codificado como /bin/sh na origem.

O código-fonte de at esclarece isso, de at.c :

    /* POSIX.2 allows the shell specified by the user's SHELL environment                                                           
       variable, the login shell from the user's password database entry,                                                                
       or /bin/sh to be the command interpreter that processes the at-job.                                                               
       It also alows a warning diagnostic to be printed.  Because of the                                                                
       possible variance, we always output the diagnostic. */

    fprintf(stderr, "warning: commands will be executed using /bin/sh\n");

Implementação, de atd.c :

if (execle("/bin/sh", "sh", (char *) NULL, nenvp) != 0)

A página man está em conformidade:

  Comandos

at e batch de leitura da entrada padrão ou de um arquivo especificado que devem ser executados posteriormente, usando / bin / sh .

Isso deixa você recompilar sua própria cópia como a única solução para atender sua necessidade.

    
por heemayl 03.10.2016 / 00:51