우리는 거의 모든 Unix 호환 시스템에서 실행되는 GNUmakefile을 만드는 방법을 찾으려고 노력하고 있습니다. 우리는 사용하고 있지만 egrep
MinGW에서는 실패합니다. grep -E
그러기 때문에 전환한다보스크, 그러나 테스트 결과 Solaris 11에서는 실패하는 것으로 나타났습니다.
makefile의 일반적인 사용법은 다음과 같습니다.
GREP ?= grep
...
IS_X86 := $(shell uname -m | $(GREP) -v "x86_64" | $(GREP) -i -c -E "i.86|x86|i86")
IS_X64 := $(shell uname -m | $(GREP) -i -c -E "(_64|d64)")
결과 :
grep: illegal option -- E
Usage: grep [-c|-l|-q] -bhinsvw pattern file . . .
grep: illegal option -- E
Usage: grep [-c|-l|-q] -bhinsvw pattern file . . .
...
-E
나는 그것을 볼 수 없으며 Posix에서는 -F
선택 사항입니다 (아마도 놓쳤을 수도 있습니다). 내가 찾은솔라리스와 POSIX의 차이점스택 오버플로에 있지만 다음과 같이 명시되어 있습니다."Solaris에는 POSIX 인터페이스 전체 세트가 있습니다...".
솔라리스는 왜 grep
소비 할 수 없나요 -E
? Solaris로 전환하는 것 외에 Solaris에서 정규식 지원을 사용할 수 있는 다른 방법이 있습니까 egrep
?
환경을 오염시키지 않았는지 확인하기 위해 Solaris 11.3 시스템에 새 테스트 계정을 설정했습니다.
이 계정이 추가되었습니다:
# useradd -d /export/home/test -m -s /bin/ksh -c "Testing Accoung" test
80 blocks
PATH
로그인 후 확인:
test@solaris:~$ echo $PATH
/usr/bin:/usr/sbin
답변1
유용
POSIX.2, POSIX.2a, XPG4, SUS 또는 SUSv2에서 요구하는 동작이 기존 Solaris 유틸리티 동작과 충돌하는 경우 유틸리티의 원래 Solaris 버전은 변경되지 않고 새로운 표준 호환 버전으로 제공됩니다
/usr/xpg4/bin
. POSIX.2, POSIX.2a, XPG4, SUS 또는 SUSv2 기능을 활용하려는 애플리케이션의 경우 이러한 사양에 지정된 유틸리티에 대한 다른 디렉터리를 찾기 전에PATH
(sh
또는ksh
) 또는path
() 환경 변수를 설정해야 합니다. , , , 그리고 .csh
/usr/xpg4/bin
/bin
/usr/bin
/usr/ucb
/usr/ccs/bin
확장 정규식을 사용해야 하는 경우에는 /usr/xpg4/bin
미리 설정하여 PATH
사용하세요 grep -E
.