Não é possível executar um script

1

Sou bem novo em scripts e tenho tentado aprender scripts para iniciantes. Estou executando o Ubuntu 18.04 LTS.

Eu descobri que o terminal usa o arquivo .bashrc . Eu adicionei:

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

para esse arquivo, em seguida, criou um script no diretório scripts . O script simples é:

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

quando eu entro no terminal e corro sh intro eu recebo:

sh: 0: Can't open intro

Eu verifiquei triplamente que o caminho para o diretório scripts foi digitado corretamente. Há algo que estou digitando ou configurando incorretamente?

    
por keaton 31.07.2018 / 01:48

1 resposta

1

Em vez de usar sh tentando usar bash . Isso funciona para mim:

$ 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

Quando você invoca seu script usando sh você está realmente usando bash , mas ele está sendo executado em um modo que faz com que ele se comporte como se fosse uma versão mais antiga do shell que é o predecessor do Bash.

trecho de 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.
    
por 31.07.2018 / 01:52