Tôi đang cố chạy lệnh đã được đặt bí danh trong số ~/.bashrc
của mình từ Perl bằng lệnh system
. Nó hoạt động tốt chạy lệnh chỉ một lần, nhưng khi tôi chạy nó hai lần lời gọi thứ hai được chạy như một công việc nền và sau đó bị đình chỉ (giống như cách nhấn <CTRL-Z>
) và tôi phải nhập fg
để hoàn thành lệnh. Ví dụ:Chạy lệnh hệ thống dưới vỏ bash tương tác
use strict;
use warnings;
system ('bash -ic "my_cmd"');
system ('bash -ic "my_cmd"');
Cuộc gọi thứ hai không bao giờ hoàn thành. Đầu ra là [1]+ Stopped a.pl
.
Lưu ý:
- Kết quả tương tự cũng thu được khi thay thế
my_cmd
với bất kỳ lệnh khác, ví dụls
. - Dường như không phụ thuộc vào nội dung của tệp
~/.bashrc
của tôi. Tôi đã cố gắng để loại bỏ tất cả mọi thứ từ nó, và vấn đề vẫn còn tồn tại.
Tôi đang sử dụng Ubuntu 14.04 và Perl phiên bản 5.18.2.
Cập nhật
Để gỡ lỗi tôi giảm của tôi ~/.bashrc
để
echo "Entering ~/.bashrc .."
alias my_cmd="ls"
alias
và tôi ~/.bash_profile
để
if [ -f ~/.bashrc ]; then
echo "Entering ~/.bash_profile .."
. ~/.bashrc
fi
Bây giờ chạy:
system ('bash -lc "my_cmd"');
system ('bash -lc "my_cmd"');
cho
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
và chạy
system ('bash -ic "my_cmd"');
system ('bash -ic "my_cmd"');
cho
Entering ~/.bashrc ..
alias my_cmd='ls'
a.pl p.sh
[1]+ Stopped a.pl
Nó đang hoạt động !! Tuyệt quá :) –