쉘 내장 명령을 사용하지 않고 쉘 환경 변수 설정

쉘 내장 명령을 사용하지 않고 쉘 환경 변수 설정

저는 "명령"을 인수로 사용하고 그 주위에 몇 가지 유용한 래퍼를 추가하는 프로그램을 작업 중입니다. 아마도 도움을 주기 위해 명령이 "존재"하는지 확인하는 것 같습니다. 내가 아는 한 이 검사는 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"

이렇게 하면 명령을 재정의하지 않고 래퍼의 테스트를 통과하는 빈 실행 파일이 생성됩니다.실제로실행하고 싶습니다(내장).

관련 정보