Por que não posso criar um arquivo de script de .xsessionrc?

5

Estou executando o LXDE / Openbox no Debian Linux. Ao fazer login, quero:

  • adiciona um diretório específico do usuário à variável $ PATH (A)
  • executar alguns comandos (não gráficos) (por exemplo, montar diretórios) (B)

A configuração deve funcionar para login gráfico, bem como para os shells de login (por exemplo, SSH). Especialmente a parte sobre estender a variável $ PATH parece ser complicada ...

Minha solução ideal seria colocar todos os comandos (A e B) em um arquivo de script separado (F) e usá-lo em .xsessionrc (para login gráfico através do gerenciador de sessão) e .profile (para login shells ). A terceirização F de .profile funciona bem, mas a origem de .xsessionrc parece falhar.

Então eu fiz a solução para definir o novo $ PATH diretamente em .xsessionrc (e também em .profile ) e apenas executar F (agora contendo apenas os comandos B) de .xsessionrc e .profile . Isso funciona bem, mas não é realmente satisfatório, pois agora eu tenho alguns comandos duplicados (A) em .xessionrc e .profile .

Existe alguma mágica que eu tenho que fazer para obter outro arquivo de .xsessionrc ou existem outras falhas óbvias no meu pensamento?

    
por BinaryBongo 25.01.2013 / 20:00

3 respostas

5

Não há nenhuma razão para o sourcing de um arquivo, com o comando sourcing padrão, que é . não source (que é um cshism também suportado por tcsh, bash, ksh e zsh mas não padrão) não funcionaria em .xsessionrc .

Você precisa verificar se a sintaxe no arquivo originado é a sintaxe sh padrão.

    
por 25.01.2013 / 22:00
2

Por que você está fazendo isso em .xsessionrc e não em em .bash_profile ou qualquer outro arquivo que seu shell usa em login (não confunda com .bashrc , que é originado por cada shell)? Aqui (Fedora) ele ainda tem um comentário útil User specific environment and startup programs ...

    
por 25.01.2013 / 20:16
-1

Dependendo da sua distro, você pode adicionar scripts para serem executados automaticamente na inicialização. Se você estiver usando initscripts, eles serão adicionados ao rc.local (/etc/rc.local IIRC) e com o systemd eu acredito que você faria um arquivo de serviço para eles e, em seguida, habilitá-lo para que ele fosse executado na inicialização. / p>

Com debian, seria initscripts e assim rc.local .

A montagem deve ser feita com /etc/fstab , que será executado na inicialização.

    
por 25.01.2013 / 21:01