Executar fora da pasta pessoal (home) um programa criado

Iniciado por joaopaulosm, 18 de Julho de 2012, 11:08

tópico anterior - próximo tópico

joaopaulosm

Pessoal, boa tarde.

Aqui vai uma dúvida básica, espero que vocês possam me ajudar.

Eu tenho um computador com 3 partições, uma com windows, outra com Ubuntu e outra chamada DADOS para compartilhar entre os 2 SOs. Na verdade, eu nem uso mais o Windows, só o Ubuntu mesmo.

Nesta partição DADOS eu quero organizar meus arquivos.

Enfim, eu criei um programa simples em linguagem C e fiz a compilação com o GCC:

gcc simples.c -o simples

Ao tentar executar este programa com ./simples a primeira mensagem é: "Permissão negada". Ao tentar executar com o sudo ./simples a mensagem é "Comando não encontrado"

Bomo eu acabei de instalar o Ubuntu 12.04, achei que era algum tipo de configuração relacionado a variável PATH, ou talvez se eu usasse o chmod 777. Enfim, pesquisei nos foruns, tentei de tudo, mas nada funcionou.

Aí eu entrei na partição do Ubuntu, na pasta home/Documents, coloquei o fonte lá e compilei com o GCC, da mesma forma. Pimba! Logo de cara, ao dar o LS já se percebe que a cor do nome do arquivo fica diferente (indicando que ele tem alguma característica diferenciada). Executei o programa com o comando ./simples e pronto, funcionou.

Enfim, alguém pode me explicar os conceitos por trás disso, qual a diferença em manipular arquivos de uma outra partição, como tornar os programas "executáveis" ou indicar alguma boa apostila para que eu possa aprender sobre isso?

Desde já agradeço!

irtigor


raidicar

#2
Citação de: joaopaulosm online 18 de Julho de 2012, 11:08
Ao tentar executar este programa com ./simples a primeira mensagem é: "Permissão negada".
1 - entre dentro do diretório do programa e de o comando "sudo chmod + x simples".
ou informe o caminho completo no comando "sudo chmod +x /home/documents/simples".

Citação de: joaopaulosm online 18 de Julho de 2012, 11:08
Ao tentar executar com o sudo ./simples a mensagem é "Comando não encontrado".
2 - Essa mensagem ocorreu por dois possíveis motivos:
a - Você não estava no mesmo diretorio que o programa simples
b - Você ainda não tinha dado o (chmod + x).
c - Você cometeu algum erro ao tentar torna-lo executavel, ex: errou o comando chmod, informou o caminho incorreto ao chmod, etc...

Ordem prara execução de programa no terminal:
1 - criar o programa.
2 - Torna-lo executavel com o comando: sudo chmod +x /caminho/nome_do_programa.
2.1 - Para executar o programa, tem duas formas:
2.1.1 - Informar o caminho completo do programa, Ex: /home/user/Documents/programa.c
2.1.2 - Entrar no diretório e executar o programa, Ex: cd /home/user/Documents/ e depois ./programa.c
obs: o "ponto" do "./" referencia toda a estrutura de diretórios anteriores ao diretório atual, eu costumo dizer, para simplificar, que o "ponto" do "./" que vem antes do programa equivale ao resultado do comando pwd.

Outra forma de executar o programa:
após o chmod + x, voce pode copia-lo para um diretório binário, EX: com o comando sudo cp programa.c /usr/local/bin vc copia o programa.c para /usr/local/bin.
Agora, para executa-lo, basta digitar programa.c.
Não será mais preciso de "./" ou informar o caminho completo, basta agora digitar o nome do programa que o mesmo será encontrado.

Citação de: joaopaulosm online 18 de Julho de 2012, 11:08
qual a diferença em manipular arquivos de uma outra partição
Nenhuma diferença. o linux utiliza estrutura de diretórios em arvores, ou seja, partições nada mais são que diretórios dentro da estruturas de diretórios.
Por isso, partições são montadas em diretórios.
Ou seja, se tenho a partição principal do windows 7 montada (configurada para acesso) no linux dentro de /media/meuwindows, a partição windows nada mais é que o diretório meuwindows dentro de /media.
Para copiar, apagar ou abrir algum conteúdo da partição do windows 7:
Cópia dos documentos do Windows 7 para os Documentos do linux: cp -r /media/meuwindows/users/usuario/documentos/* /home/usuario/Documentos/
remoção dos Documentos do Windows 7: rm -rf /media/meuwindows/users/usuario/documentos/*
remoção dos Documentos no Linux: rm -rf /home/usuario/Documentos/*

Comando útil:
df -h
Mostra onde as partições estão montadas (configuradas para acesso).
Ex:
Resultado do df -h:
Sist. Arq.            Tam. Usado Disp. Uso% Montado em
/dev/sda5              46G   22G   23G  49% /
udev                  2,9G  4,0K  2,9G   1% /dev
tmpfs                 1,2G  1,3M  1,2G   1% /run
none                  5,0M     0  5,0M   0% /run/lock
none                  2,9G  1,7M  2,9G   1% /run/shm
/dev/sda6             118M   60M   52M  54% /boot
/dev/sdb1             405G  332G   52G  87% /media/meuwindows
O disco sdb1 é o disco que contém o windows e está acessível em /media/meuwindows.
Pelo terminal, cd /media/windows já te joga na partição windows.

Att,


Quem ama extremamente, deixa de viver em si e vive no que ama. Na vida três coisas são certas, o amor, a morte e o Linux !
Se Platão disse, então realmente sofremos de uma perigosa doença mental.

irtigor

Dar permissão de execução no código fonte não faz sentido, leia a minha resposta, deve ficar claro, mas qualquer dúvida, fale.