스크립트를 실행할 수 없습니다.

스크립트를 실행할 수 없습니다.

저는 우분투 18.04 LTS를 실행하고 있습니다.

터미널에서 이 .bashrc파일을 사용하는 것으로 나타났습니다. 나는 다음을 추가했다:

export PATH="/home/keaton/scripts/:$PATH"

파일에 복사하고 디렉토리에 스크립트를 만듭니다 scripts. 간단한 스크립트는 다음과 같습니다:

echo "Hello World"
echo $(which neqn)
cat $(which neqn)

터미널에 들어가서 실행하면 다음과 같은 결과가 sh intro나타납니다.

sh: 0: Can't open intro

디렉토리 경로가 scripts올바르게 입력되었는지 세 번 확인했습니다. 제가 잘못 입력했거나 잘못 구성했나요?

답변1

을 사용하는 대신 sh다음 bash을 사용해 보십시오.

$ bash intro
Hello World
/usr/bin/neqn
#! /bin/sh
# Provision of this shell script should not be taken to imply that use of
# GNU eqn with groff -Tascii|-Tlatin1|-Tutf8|-Tcp1047 is supported.

GROFF_RUNTIME="${GROFF_BIN_PATH=/usr/bin}:"
PATH="$GROFF_RUNTIME$PATH"
export PATH
exec eqn -Tascii ${1+"$@"}

# eof

스크립트를 호출하면 sh실제로는 이를 사용 bash하지만 Bash의 이전 버전인 셸의 이전 버전처럼 동작하도록 만드는 모드에서 실행됩니다.

에서 발췌man bash:
 If  bash  is  invoked  with the name sh, it tries to mimic the startup 
 behavior of historical versions of sh as closely as possible, while 
 conforming to the POSIX standard as well.  When invoked as an interactive 
 login shell, or a non-interactive shell with the --login option, it first 
 attempts to read and execute commands from /etc/profile and ~/.profile, 
 in that order. The  --noprofile option may be used to inhibit this 
 behavior.  When invoked as an interactive shell with the name sh, bash 
 looks for the variable ENV, expands its value if it is defined,
 and uses the expanded value as the name of a file to read and execute.  

 Since a shell invoked as sh does not attempt to read and execute  
 commands  from  any  other  startup  files,  the --rcfile  option  has no 
 effect.  A non-interactive shell invoked with the name sh does not 
 attempt to read any other startup files.  When invoked as sh, bash enters 
 posix mode after the startup files are read.

관련 정보