모든 입력에 감사드립니다. 나는 지금 내 자신의 질문에 대답하고 스크립트와 바이너리를 실행할 수있는 다양한 가능성에 대한 완전한 가이드를 제공하려고 노력할 것이다. 편집하고 의견을 작성하면 완전하고 정확한 것을 얻을 수 있습니다. 내 제안은 다음과 같습니다.
처음에는 두 가지 사항이 있습니다.
리눅스는 명령 과 경로를 구분 합니다 . 명령 프롬프트에있는 그대로 만 입력하고, 실행하는 내장 또는 해당 바이너리 또는 $ PATH에서 스크립트를 찾기 위해 리눅스의 원인이됩니다.
Linux가 무언가를 경로로 해석하려면 슬래시 (/)가 하나 이상 있어야합니다. 예를 들어 ./myScript
, ./
꽤 중복되는 것처럼 보일 수 있습니다-Linux가 명령이 아닌 경로로 해석하도록해야합니다.
따라서 바이너리 또는 스크립트를 실행하기위한 옵션은 다음과 같습니다.
바이너리 실행 binary
:
$ binary # when 'binary' is on the PATH, or is a built-in
$ ./binary # when 'binary' is not on the path but in the current directory
$ /home/me/binary # when 'binary' is not on the PATH, and not in the current dir
스크립트 실행 script
:
달리 명시되지 않는 한 파일에 실행 권한이 있어야합니다.
$ script # execute a script that is on PATH. Will be executed in a new shell.
# The interpreter to use is determined by the she-bang in the file.
$ ./script # execute a script that is in the current dir. Otherwise as above.
$ /a/dir/script # when the script is not on the PATH and not in current dir.
# Otherwise as above.
$ . script # execute a script in the current dir. Will be executed in the
# current shell environment.
$ source script # equivalent to the above *1
$ sh script # executes 'script' in a new shell *2 (the same goes for 'bash ...',
# 'zsh ...' etc.). Execute permission not neccessary.
그녀에 대해 :
#!/bin/sh
첫 줄에 she-bang이있는 스크립트 (예 :) 는 사용할 인터프리터를 알려줍니다.
- 이 인터프리터는
./script
명령에 의해 또는 명령을 사용할 때 사용됩니다 script
( script
PATH에 있어야 함).
- 를 사용하면-
sh script
을 무시하고이 경우 sh
통역사로 사용합니다.
- she-bang을 사용
. script
하거나 source
무시하고 현재 인터프리터를 사용합니다 ( 현재 쉘에서 스크립트의 각 행을 실행하는 것과 같 .
거나 source
이에 해당)
각주
* 1 : 이것은 거의 사실입니다. 배쉬에서 그들은 실제로 같은 명령하지만, 사용하는 경우 source
, script
$ PATH에서 검색됩니다 전에 현재 디렉토리. 그것은 bash이지만 POSIX 전용 셸에서는 source
작동하지 않지만 작동 .
합니다. 따라서 이식성을 위해 후자를 사용하십시오.
* 2 : 실제로 'script'를 인자로 사용하여 바이너리 sh를 실행하면 새로운 쉘에서 'sh'가 'script'를 실행하게됩니다.