'Su' kullanırken bash path ile ilgili sorunlar


4

Ubuntu'da Lucid Lynx , Yapmaya çalışıyorum

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

nerede foo.sh bir yürütülebilir bash betiği PATH ayarlanmış ~user/.bashrc. Ne yazık ki, bu başarısız çünkü bulamıyor. foo.sh. Eğer ben su -l user ve elle yazın foo.sh args komut satırında, iyi çalışıyor. PATH büyütme işlemi ~user/.bashrc ve çalışıp çalışamayacağım su ile -l etkileşimli, ancak komutu belirttiğimde işe yaramadı.

Bunun neden olduğu ve bununla nasıl başa çıkabileceğim hakkında bir fikriniz var mı?

Yanıtlar:


2

Kabuğu etkileşimli olmayan bir giriş kabuğu olarak başlatıyor, böylece işleniyor ~/.profile ve yok ~/.bashrc. Ayarlayabilirsiniz PATH Bu dosyada veya her ikisinin de kaynak olduğu ortak bir dosyada yapın. Bazı insanlar / dağıtımlar diğerine kaynak vermek için bir başlangıç ​​dosyası oluşturuyor, ancak bunu önermiyorum.

itibaren man bash:

Bash etkileşimli bir giriş kabuğu olarak veya --login seçeneğiyle etkileşimli olmayan bir kabuk olarak çağrıldığında, önce com komutunu okur ve yürütür.          Bu dosya varsa, / etc / profile dosyasından mands. Okuduktan sonra          bu dosya, ~ / .bash_profile, ~ / .bash_login ve ~ / .profile dosyasını arar.          Bu sırada, ilk gelen komutları okur ve uygular.          var ve okunabilir. --Noprofile seçeneği ne zaman kullanılabilir          kabuk bu davranışı engellemeye başlar.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.