바이너리 파일을 실행하는 다른 방법은 무엇입니까? [폐쇄]

바이너리 파일을 실행하는 다른 방법은 무엇입니까? [폐쇄]

터미널(명령줄)을 사용하여 Unix 바이너리를 실행하는 더 많은 방법이 있습니까? 예를 들어 echo:

$ /bin/echo "test"
test

$ cd /bin/
$ ./echo "test"
test

$ eval echo "test"
test

답변1

바이너리가 실행되도록 할 수 있는 셸 명령줄이나 셸 스크립트 줄에 코드를 표현하는 방법에는 여러 가지가 있습니다. 그것들은 모두 쉘 명령 실행으로 요약됩니다. 명령이 파일을 참조하는 경우 쉘은 파일 실행을 시도합니다. 파일 실행 권한이 있으면 시도가 성공합니다. 파일은 바이너리 실행 파일이거나 첫 번째 줄에서 해석기를 참조하는 스크립트("#!"로 시작)일 수도 있고, 단순한 일반 데이터(예: 텍스트)일 수도 있습니다. 이때 실행 가능하면 실행되거나 해석됩니다. 쉘에는 명령을 표현하는 다양한 방법이 있습니다. 가능성은 무한합니다.

답변2

참고하시기 바랍니다,Sparhawk가 의견에서 지적했듯이, 처음 두 예제는 본질적으로 동일한 작업을 수행하며(경로 조회를 수행하는 대신 경로를 사용하여 프로그램을 호출함) 해당 논리에 따르면 주어진 프로그램을 실행하는 방법은 사실상 무한합니다.

어쨌든, 쉘에서 프로그램을 실행하는 방법에는 적어도 4가지가 있다고 말하고 싶습니다 [1]:

  • 쉘 내장 함수: 일부 명령(예: echoBash의 명령 자체)은 셸에서 구현되므로 해당 외부 유틸리티(있는 경우)를 호출하지 않습니다.

    $ echo foo
    foo
    
  • 길 찾기: 쉘이 환경변수에 포함된 각 디렉토리에서 필요한 프로그램을 검색할 때 PATH.

    $ cat <<< foo
    foo
    
  • 직접 전화하다: 전체/상대 경로를 사용하여 프로그램을 호출할 때.

    $ /bin/echo foo
    foo
    
    $ ../../bin/echo foo
    foo
    
  • 간접 통화: 해당 프로그램이 다른 프로그램(내장 프로그램 또는 외부 프로그램)에 의해 호출되는 경우.

    $ eval echo foo
    foo
    
    $ command echo foo
    foo
    
    $ sh -c 'echo foo'
    foo
    

1.네가 말한 거 알아바이너리 파일. 스크립트는 셸에서도 실행될 수 있기 때문에 좀 더 일반적인 용어를 사용합니다.

관련 정보