system
명령을 사용하여 Perl에서 내 ~/.bashrc
에 별명이 지정된 명령을 실행하려고합니다. 이 명령은 한 번만 실행되지만 두 번 실행하면 두 번째 호출이 백그라운드 작업으로 실행 된 다음 일시 중단됩니다 (<CTRL-Z>
과 동일). 명령을 완료하려면 fg
을 입력해야합니다. 예 :대화식 bash 쉘에서 시스템 명령 실행
두 번째 호출이 완료되지 않습니다. 출력은 [1]+ Stopped a.pl
입니다.
주의 : 다른 명령 my_cmd
교체시
- 동일한 결과가 예
ls
대해 얻어진다. - 내
~/.bashrc
파일의 내용에 의존하지 않는 것 같습니다. 나는 그것에서 모든 것을 제거하려고 노력했고, 문제는 여전히 지속되었다.
저는 Ubuntu 14.04 및 Perl 버전 5.18.2를 사용하고 있습니다.
system ('bash -lc "my_cmd"');
system ('bash -lc "my_cmd"');
:
업데이트 디버깅을위한
나는 나의 ~/.bashrc
echo "Entering ~/.bashrc .."
alias my_cmd="ls"
alias
내 ~/.bash_profile
if [ -f ~/.bashrc ]; then
echo "Entering ~/.bash_profile .."
. ~/.bashrc
fi
에 지금 실행 감소
이
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
및
system ('bash -ic "my_cmd"');
system ('bash -ic "my_cmd"');
실행주는 대화 형 쉘의 -i
스위치를 사용하는 것보다 오히려
Entering ~/.bashrc ..
alias my_cmd='ls'
a.pl p.sh
[1]+ Stopped a.pl
작동 중 !! 그레이트 :) –