Problemas com o caminho bash ao usar 'su'

4

No Ubuntu Lucid Lynx , estou tentando fazer

su -l user -c "foo.sh args"

em que foo.sh é um script bash executável no PATH definido em ~user/.bashrc . Infelizmente, isso falha porque não é possível encontrar foo.sh . Se eu su -l user e manualmente digito foo.sh args na linha de comando, ele funciona bem. O aumento do PATH é feito em ~user/.bashrc e parece funcionar ou não com su com -l interativamente, mas parece não funcionar quando eu especificar o comando.

Alguma idéia do porquê disso e como posso contornar isso?

    
por Thuktun 08.09.2010 / 05:29

1 resposta

2

Ele está iniciando o shell como um shell de login não interativo para processar ~/.profile e não ~/.bashrc . Você pode definir seu PATH nesse arquivo ou fazê-lo em um arquivo comum que os dois usam. Algumas pessoas / distribuições definem um arquivo de inicialização para criar o outro, mas eu não recomendo isso.

De man bash :

When bash is invoked as an interactive login shell, or as a non-interactive shell with the --login option, it first reads and executes com‐ mands from the file /etc/profile, if that file exists. After reading that file, it looks for ~/.bash_profile, ~/.bash_login, and ~/.profile, in that order, and reads and executes commands from the first one that exists and is readable. The --noprofile option may be used when the shell is started to inhibit this behavior.

    
por 08.09.2010 / 05:56