Waz Sage
Tipitaka
Level 25
Warrior
|
24th September 2017 13:34:22
Hello world,
I've created a very simple script to run zezenia using a single shell command. To do this I first had to run a terminal client, xfce-terminal. inside the terminal I created a new file in /usr/local/bin directory using nano text editor with root privileges. /usr/local/bin directory is a binary directory, you can run any application from anywhere in a terminal client when an application is stored there. So first I had to become root. $ su Then I had to create a file and store it inside /usr/local/bin # nano /usr/local/bin/zezenia I had to insert the first line of every bash script #!/bin/bash Then I had to create a function to change the directory to the downloaded and uncompressed zezenia folder using a bash command called cd. The function name is ebin () ebin () { cd '/home/bem/Downloads' ; ./zezeniaclient } ebin Then I saved it and gave it privileges so I could run It as a common user # chmod a+x It was time to switch to my regular user account and to run zezenia with the command below. $ . zezenia |
Waz Sage
Tipitaka
Level 25
Warrior
|
24th September 2017 13:40:12
A história completa.
Do programa cd utilizei: O nome, cd A sinópse, cd [-L|-P] [directory] A descrição, O programa cd é utilizado para mudar o diretório atual de um ambiente terminal. É a abreviação de change directory. Escrevi um programa em bash: O nome, ebin. - Tive problemas para mudar o diretório e executar o binário do programa. - Abri o navegador. - Entrei no site do Google. - Escrevi no campo de pesquisa do Google: "cd bash script" - Visitei algumas páginas até que, - Encontrei um resultado na página do stackoverflow O link da página, https://stackoverflow.com/questions/874452/change-current-directory-from-a-script O usuário winden, escreveu uma solução e explicou porquê é uma solução. - Ele disse que é preciso converter o script em uma função shell. Então escrevi a função shell ebin para mudar o diretório e executar um binário. function ebin() { cd /home/bem/Downloads & exec optirun ./zezeniaclient & } Não funcionou. Então fiz nova pesquisa no Google: using echo to execute shell commands Entrei no primeiro site da lista, stackexchange. O link: https://unix.stackexchange.com/questions/244372/how-to-execute-shell-command-produced-using-echo-and-sed O usuário dhag tinha 8,303 publicações, 3 medalhas de ouro, 17 de prata e 32 de bronze. Ele respondeu que para usar echo e escrever um comando bash é preciso escrever: echo "comando argumentos" | bash Ele também diz que é possível passar como um argumento do shell. bash -c "$(echo "comando argumentos")" E também diz ser possível executar o bash na função integrada eval: eval "$(echo "comando argumentos")" Nenhuma dessas propostas fizeram o programa cd funcionar. Então, fiz uma nova busca por "using cd in bash script" Entrei novamente no site do stackoverflow: https://stackoverflow.com/questions/255414/why-doesnt-cd-work-in-a-bash-shell-script compie diz: Olha, para se livrar desse problema use o meio de indicação e escreva: alias ebin="cd /home/bem/Downloads" Mas ele não diz como utilizar essa indicação, então pesquisei: "how to use an alias in bash script" O acesso dessa vez é ao site askubuntu.com. Seu link https://askubuntu.com/questions/98782/how-to-run-an-alias-in-a-shell-script Desisti de dar continuidade no askubuntu.com. Voltei para o site do stackoverflow https://stackoverflow.com/questions/255414/why-doesnt-cd-work-in-a-bash-shell-script DigitalRoss disse: É preciso definir uma função para fazer isso, porquê não funciona sendo invocado como um simples comando. Então, nos finalmente o que fez funcionar foi a função abaixo ebin () { cd '/home/bem/Downloads/' ; optirun ./zezeniaclient } Por algum motivo tive problemas em executar tudo em uma única linha, o script retornava o erro Unexpected end of file até funcionou de forma estruturada, linha por linha. Bye. |