Usei um script sugerido por @Artem S. Tashkinov :" Escrevi isso para mim, mas roda no console. "
$sh raw_io.sh:
20: shopt: not found
raw_io.sh:
48: declare: not found
raw_io.sh:
61: Syntax error: redirection unexpected
Descobri que só precisava torná-lo executável e clicar duas vezes nele e, em seguida, "Executar no terminal":
Como é refrescante, não consigo copiar/colar a saída. Então, fiz uma captura de tela:
Como funciona com um clique duplo, mas preciso clicar em "Executar no terminal", também queria saber como iniciá-lo diretamente do terminal.
~/Desktop$ raw_io
raw_iso: command not found
Então, qual é a diferença entre essas formas de lançar isso?
Como você executa um script chamado
myscript
?etc.
Isso é fácil, mas você precisa saber qual interpretador usar para executar o script e, como você percebeu, tentar usar o errado gerará erros (por exemplo, usar em vez de
sh
)bash
.Melhor é deixar o próprio script declarar o intérprete correto. Isso é definido usando o
#!
na primeira linha. Por exemplo, esta linha declarariabash
(especificamente/bin/bash
) como o interpretador:Para usar esse recurso, você precisa tornar o script executável,
e desde que esteja em uma lista de diretórios separados por dois pontos especificados em
$PATH
você poderá executá-lo exatamente como qualquer outro programa - apenas com seu nomeNo entanto, observe que o diretório atual (indicado como
.
) não está,$PATH
portanto, se você estiver trabalhando em um script no diretório atual, será necessário fornecer um caminho para o script para que ele possa ser encontrado. Aqui.
representa o diretório atual e é um caminho relativo ao seu diretório de trabalho atual (ou seja, o mesmo local):Existem boas razões pelas quais
.
geralmente não está no$PATH
, mas se você precisar adicioná-lo, coloque-o no final do$PATH
e não no início. (Consulte Histórico do UNIX não incluindo o diretório atual em $PATH e Por que . não está no caminho por padrão? .)Observe que o nome ou a extensão do script não importa (a menos que você acabe usando um nome de comando como o
test
que já está presente nos diretórios do sistema listados em$PATH
). Eu useimyscript
como exemplo aqui. Você poderia usarmyscript.sh
se quisesse, ou atéconfusion.png
, mas você não usals.exe
então não vejo necessidade de termyscript.sh
. Esteja ciente, no entanto, que algumas GUIs podem usar extensões de arquivo para adivinhar o que está no arquivo e usar extensões de maneira não padrão (comopng
para um script) pode confundi-los. A maneira correta de uma GUI identificar o conteúdo do arquivo seria usar um equivalente aofile
comando, mas nem todos fazem isso:Por fim, quando termino de trabalhar em um script que vou reutilizar, costumo colocá-lo em um diretório incluído no meu arquivo
$PATH
. Torna-se então uma ferramenta tão fácil de acessar quantols
oucp
. No meu caso, eu uso$HOME/bin
, mas você pode escolher qualquer diretório que desejar, desde que esteja listado em$PATH
.