저는 "명령"을 인수로 사용하고 그 주위에 몇 가지 유용한 래퍼를 추가하는 프로그램을 작업 중입니다. 아마도 도움을 주기 위해 명령이 "존재"하는지 확인하는 것 같습니다. 내가 아는 한 이 검사는 which
. 내 bash 쉘에는 set
및 같은 명령이 export
내장되어 있으므로 which
아무것도 반환되지 않습니다.
쉘 내장 명령을 사용하지 않고 환경 변수를 설정하는 방법이 있습니까?
set.sh
내 생각은 정의 와 같은 일을하는 것입니다
#! /bin/bash
export $1
근데 이건 미친 것 같아
답변1
할 수 없습니다. 쉘만이 자체 환경을 변경할 수 있습니다 set
.export
~ 해야 하다항상 내장되어 있습니다.
cd
등 은 alias
동일합니다.
제가 제안할 수 있는 최선의 방법은 쉘 함수를 사용하여 래퍼를 다시 구현하는 것입니다. 또는 "얻는" 쉘 스크립트입니다. 어느 쪽이든 실행되는 래퍼는~에쉘은 이러한 작업을 보다 원활하게 수행할 수 있습니다.
답변2
원래 문제에 대한 가능한 해결 방법은 래퍼에 대한 래퍼를 제공하는 것입니다(Xzibit 이미지 제외).
#!/bin/bash
command="$1"
temp=$(mktemp -d)
> "$temp/$command"
chmod a+x "$temp/$command"
PATH+=:$temp
your_wrapper
rm -r "$temp"
이렇게 하면 명령을 재정의하지 않고 래퍼의 테스트를 통과하는 빈 실행 파일이 생성됩니다.실제로실행하고 싶습니다(내장).