BSD 버전 대신 Linux 버전의 명령을 사용하십시오.

BSD 버전 대신 Linux 버전의 명령을 사용하십시오.

현재 노트북에서 사용하려는 오래된 노트북의 유틸리티 bash 스크립트가 있습니다. column명령 에 알 수 없는 옵션을 전달하기 때문에 실패합니다 . 실행 중입니다 man column. 이 컴퓨터가 사용 중인 것을 확인했습니다.BSD 버전이 스크립트는리눅스 버전, 더 많은 선택이 있습니다.

오래된 기계에 접근할 수 없기 때문에 설정 방법에 대해선 별로 말할 수 없습니다.굉장히 유사한새로운 것들에게. 현재 컴퓨터는 지난 며칠 동안 새로 설치된 Pop!OS 20.04를 실행하고 있습니다.

사용하려는 유사한 명령을 지정하는 분명히 올바른 방법이 있습니까?

답변1

사용하려는 유사한 명령을 지정하는 분명히 올바른 방법이 있습니까?

약간의 위험을 감수또한이를 수행하는 확실한 방법은 스크립트에서 사용하려는 정확한 실행 파일의 전체 경로를 지정하는 것입니다.

#!/usr/bin/env bash

# use the col executable in /usr/bin, not that other one:
col='/usr/bin/col'

$col ... ... ...

@muru가 지적했듯이 또 다른 접근 방식은 col()사용하려는 특정 바이너리를 호출하는 함수를 선언하는 것입니다.

#!/usr/bin/env bash

# use the col executable in /usr/bin, not that other one:
col()
{
  /usr/bin/col "$@"
}

col ... ... ...

답변2

예를 들어 원하는 버전이 포함된 디렉터리가 원하지 않는 버전이 포함된 디렉터리 앞에 오도록 type -a column디렉터리를 다시 정렬하여 해당 버전을 찾으세요 . $PATH그런 다음 rehash명령을 실행하십시오.

PATH편집이 까다롭습니다. 자신이 하고 있는 일이 확실하지 않은 이상 PATH=내용 없이 과제를 수행하지 마십시오 .$PATH

나는 2000년에 Linux Journal에 설명된 Stephen Collyer의 bash_path_funcs를 사용합니다.

https://www.linuxjournal.com/article/3645 https://www.linuxjournal.com/article/376​​8 https://www.linuxjournal.com/article/3935

addpath이 함수는 처음에 해당 항목이 경로에 존재하지 않는 경우에만 경로에 항목을 추가합니다. delpath -n경로에서 존재하지 않는 디렉터리를 제거합니다.

pathfunc.tgz에서 파일을 받을 수 있습니다 .https://web.archive.org/web/20061210054813/http://www.netspinner.co.uk:80/Downloads/pathfunc.tgz

관련 정보