Scripts do Slackware iniciados no momento da inicialização precisam de env vars de /etc/profile.d/* para serem configurados

2

Ei, eu tenho esse problema, que os scripts iniciados no tempo de inicialização do rc.local não têm variáveis de ambiente (definidas em /etc/profile.d/*) definidas no momento de sua inicialização. O que devo fazer ?

"su-lisak -c /opt/atlassian-jira-enterprise-4.1.1-standalone/bin/startup.sh"

"su-lisak -c /opt/aaa2/at-22/bin/startup.sh"

por lisak 13.06.2010 / 18:35

3 respostas

0

Os scripts em /etc/profile.d/* são executados em seus próprios shells, em vez de serem fornecidos de forma que as variáveis de ambiente que eles configuram não estão disponíveis de qualquer maneira. De quais variáveis você precisa? Você pode fazer uso de /etc/environment ? Você pode gravar as variáveis em um arquivo em um formato var=value dos scripts apropriados e criar esse arquivo em rc.local scripts?

Isso é da página man do Bash. Você pode achar útil.

When bash is started non-interactively, to run a shell script, for example, it looks for the variable BASH_ENV in the environment, expands its value if it appears there, and uses the expanded value as the name of a file to read and execute. Bash behaves as if the following com‐ mand were executed: if [ -n "$BASH_ENV" ]; then . "$BASH_ENV"; fi but the value of the PATH variable is not used to search for the file name.

O shell Bourne usa da mesma forma a variável ENV .

    
por 13.06.2010 / 18:55
0

Citação da su manpage (Slackware 13.1):

       -, -l, --login
       Provide an environment similar to what the user would expect had
       the user logged in directly.

       When - is used, it must be specified as the last su option. The
       other forms (-l and --login) do not have this restriction.

No seu exemplo, você não especifica - como a última opção su. Tente fazer isso ou usando um argumento alternativo.

    
por 13.06.2010 / 18:57
0

Acho que a melhor solução é obter o /etc/profile.d/*.sh ou executar o / etc / profile a partir do rc.local, porque não quero duplicar a configuração de scripts de tempo de inicialização e scripts iniciados a partir do shell de login ...

NOTA: Eu não sei quais poderiam ser as conseqüências da execução do / etc / profile a partir do rc.local ... então a melhor maneira seria fazer o sourcing no rc.local em /etc/profile.d/*. sh

AKA: para arquivo em /etc/profile.d/*; fazer o arquivo $ de origem; feito

ALTERNATIVO: echo ". / etc / profile" > > $ HOME / .bashrc - para usuário único

    
por 13.06.2010 / 20:17