Bourne shell: o que ele executa em interativo, não-login?

1

Eu peço dessa forma, porque de acordo com o link , quando eu começo screen é um "interativo , não-login "Estou fazendo. O que realmente está acontecendo é que estou logando em um sistema Bourne shell (não BASH), e quando o faço, ele executa ~/.profile bem, e configura meus aliases. Mas quando eu executo screen , esses aliases são perdidos e não parece correr ~/.profile ou ~/.login ou qualquer outra coisa que eu tentei.

Estou executando o LibreELEC em um Raspberry Pi 3.

    
por PenguinLust 28.01.2017 / 19:09

1 resposta

3

Um login sh session lê o usuário ~/.profile na invocação. Se a variável ENV estiver definida para um nome de arquivo depois disso, e se esse arquivo existir, o shell usará esse arquivo para inicializar ainda mais a sessão de login.

Os shells interativos que não são shells de login só usarão $ENV se ENV estiver definido, mas não lerá ~/.profile .

O shell não interativo não deve usar nenhum desses dois arquivos.

Normalmente, uma pessoa exporta ENV no final de seu ~/.profile :

ENV="$HOME/.shrc"     # for example
export ENV            # may be done as export ENV="..." too, in most shells.

Isto é, por exemplo, o que o bash faz se for invocado como sh ou com bash --posix .

Pode-se usar esses dois arquivos ( ~/.profile e $ENV ) para o que se deseja, mas o perfil é onde você pode definir e exportar variáveis de ambiente que precisam ser definidas apenas uma vez ( PATH etc. ), inicie qualquer processo fetchmail ou outro daemon de usuário que você deseja usar, etc., enquanto o arquivo $ENV é onde você configura itens específicos para esta sessão de shell / TTY, como a configuração GPG_TTY (se você está usando o GnuPG), configurando aliases (já que aliases não são herdados por subshells) etc.

O shell ksh93 usa ~/.profile e $ENV por padrão, mas interpreta $ENV de uma maneira específica. Se $ENV começar com /./ ou ././ , nenhum arquivo de configuração do sistema será usado (por exemplo, /etc/ksh.kshrc ).

O arquivo ~/.login não é usado por sh , a menos que ENV esteja definido para este nome de arquivo ou seja explicitamente proveniente de ~/.profile ou $ENV .

    
por 28.01.2017 / 19:26