~/.bashrc
adresimde system
komutunu kullanarak Perl'den gelen bir komutu çalıştırmaya çalışıyorum. Komutu sadece bir kez çalıştıran iyi çalışır, ancak iki kez çalıştırdığımda ikinci çağrı bir arka plan işi olarak çalıştırılır ve sonra askıya alınır (<CTRL-Z>
tuşlarına basmakla aynıdır) ve komutu tamamlamak için fg
yazmam gerekir. Örneğin, ikinci çağrı hiçbir zaman tamamlanmayacaktır. Çıkış, [1]+ Stopped a.pl
.Etkileşimli bash kabuğunun altında sistem komutunu çalıştırma
Not: başka bir komutuyla my_cmd
değiştirilirken
- Aynı sonuç, örneğin
ls
için, elde edilir. ~/.bashrc
dosyamın içeriğine bağlı değil gibi görünüyor. Ondan her şeyi kaldırmaya çalıştım ve sorun hala devam etti.
Ubuntu 14.04 ve Perl sürüm 5.18.2 kullanıyorum.
system ('bash -lc "my_cmd"');
system ('bash -lc "my_cmd"');
:
Güncelleme ayıklama için
Ben benim ~/.bashrc
echo "Entering ~/.bashrc .."
alias my_cmd="ls"
alias
ve benim ~/.bash_profile
if [ -f ~/.bashrc ]; then
echo "Entering ~/.bash_profile .."
. ~/.bashrc
fi
Şimdi çalışan azaltılmış
Entering ~/.bash_profile ..
Entering ~/.bashrc ..
alias my_cmd='ls'
bash: my_cmd: command not found
Entering ~/.bash_profile ..
Entering ~/.bashrc ..
alias my_cmd='ls'
bash: my_cmd: command not found
ve
system ('bash -ic "my_cmd"');
system ('bash -ic "my_cmd"');
çalışan veren interaktif kabuk için -i
anahtarını kullanarak daha ziyade
Entering ~/.bashrc ..
alias my_cmd='ls'
a.pl p.sh
[1]+ Stopped a.pl
Çalışıyor !! Harika :) –