.bash_profile
Bash를 사용하고 일부 기능을 내보내기 때문에 FreeBSD 10.1 amd64에서 많은 오류가 발생합니다 . FreeBSD에서 테스트 스크립트를 실행하려고 하면 결과는 다음과 같습니다.
$ ./cryptest.sh
bash: Skipping importing function definition for `sh_perms': --import-functions required.
bash: Skipping importing function definition for `sh_gclean': --import-functions required.
...
make: environment corrupt; missing value for BASH_FUNC_sh_clean
make: environment corrupt; missing value for BASH_FUNC_sh_clean
make: environment corrupt; missing value for BASH_FUNC_sh_clean
...
정보가 많이 없긴 했지만 알아냈어요IMPORTFUNCTIONS
FreeBSD Bash 페이지에서:
IMPORTFUNCTIONS 옵션을 선택하여 포트의 기본값을 변경할 수도 있습니다.
에 다음을 추가하고 .bash_profile
로그아웃한 후 다시 로그인했지만(sourced 포함 .bash_profile
) 문제가 지속됩니다.
IS_FREEBSD=$(uname -s | grep -i -c freebsd)
if [[ ("$IS_FREEBSD" -ne "0") ]]; then
export IMPORTFUNCTIONS=y
fi
FreeBSD의 CVE가 수정되고 있다는 것을 알고 있지만 별로 신경쓰지는 않습니다. 저는 FreeBSD 관리자가 아니며 이 문제를 해결하기 위해 정보를 파헤치는 데 일주일을 소비해야 한다는 생각에 오그라들었습니다. 나는 일부 소프트웨어를 테스트하기 위해 일년에 몇 번만 이 기계를 열고 로그인하므로 기계가 작동해야 합니다.
예상대로 작동하도록 셸을 수정하려면 어떻게 해야 합니까?
이것은 함수의 예입니다. 이를 통해 Git 저장소의 브랜치를 신속하게 재설정하고 명령 하나로 업데이트할 수 있습니다. Git은 간단한 작업 흐름을 취하고 이를 복잡하게 만들거나 어렵거나 심지어 불가능하게 만드는 경향이 있기 때문에 이를 사용합니다(개발 브랜치를 삭제하는 것이 얼마나 어려운지 아셔야 합니다).
function sh_gpull {
if [[ (-z $(git rev-parse HEAD 2>/dev/null)) ]]; then
echo "$PWD is not a Git repository"
[[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1
fi
echo "Branch:" $(git rev-parse --abbrev-ref HEAD 2>/dev/null)
git reset --hard HEAD 2>/dev/null
git pull
[[ "$0" = "$BASH_SOURCE" ]] && exit 0 || return 0
}
...
export -f sh_gpull ...