Linux за българи: Форуми

Linux секция за напреднали => Хардуерни и софтуерни проблеми => Темата е започната от: bot в Dec 26, 2018, 18:57



Титла: задаване на $PATH променливата
Публикувано от: bot в Dec 26, 2018, 18:57
 Проблемът ми е следният: имам една програма със странен формат - ./calculate, ако може някой да обясни какво означава това ./ пред файла?  Програмата се намира в /home/myscripts/ Като вляза там я стартирам без проблем. Мога да стартирам програмата отвсякъде като напиша пълният префикс /home/myscripts/./calculate. опитвам се да задам /home/myscripts пътя в $PATH и явно се получава, като напиша echo $PATH ми излиза /home/myscripts но не мога да стартирам ./calculate от друго място, освен от собствената му директория. Някакви идеи? Дистрото е Debian Stretch.


Титла: Re: задаване на $PATH променливата
Публикувано от: Acho в Dec 26, 2018, 18:59
Означава че изпълнимия файл който искаш да се стартира - трябва да се намира в текущата директория.


Титла: Re: задаване на $PATH променливата
Публикувано от: bot в Dec 26, 2018, 19:01
Означава че изпълнимия файл който искаш да се стартира - трябва да се намира в текущата директория.

 OK, има ли някакъв вариант да го стартирам от друго място? Задал съм пътя, друго трябва ли да направя? Не е кой знае какъв проблем, но е дразнещо навсякъде да пиша пълният път към файла.


Титла: Re: задаване на $PATH променливата
Публикувано от: Acho в Dec 26, 2018, 19:04
Не. Само си описваш правилно целия път до изпълнимия файл. И трябва скрипта (най-добре си го сложи в един изпълним скрипт) в който ще се напише тоя целия ред - да се стартира от юзер с права за изпълнение на тази програма.


Титла: Re: задаване на $PATH променливата
Публикувано от: Acho в Dec 26, 2018, 19:06
/home/myscripts/./calculate

Тука не ти трябва точката, а само :

/home/myscripts/calculate

И тази команда ще се изпълнява отвсякъде.


Титла: Re: задаване на $PATH променливата
Публикувано от: bot в Dec 26, 2018, 19:13
/home/myscripts/./calculate

Тука не ти трябва точката, а само :

/home/myscripts/calculate

И тази команда ще се изпълнява отвсякъде.

 Мерси Ачо, не се сетих за това. Нямаше ли един по-кратък начин, казваше се символен линк или подобно, правих го навремето да подкарам една програма, която търсеше "COM" за сериен порт, та се правеше нещо от сорта на <команда> "ttyS1" "COM1"


Титла: Re: задаване на $PATH променливата
Публикувано от: Acho в Dec 26, 2018, 19:19
Сигурно има още поне пет начина, ама туй е най-мързелешкото за мене. Пък и ще работи винаги.


Титла: Re: задаване на $PATH променливата
Публикувано от: bot в Dec 26, 2018, 19:24
Сигурно има още поне пет начина, ама туй е най-мързелешкото за мене. Пък и ще работи винаги.
Мерси! Жив и здрав!


Титла: Re: задаване на $PATH променливата
Публикувано от: Acho в Dec 26, 2018, 19:28
Да ти се връща мой човек. Наздраве !


Титла: Re: задаване на $PATH променливата
Публикувано от: ray в Dec 27, 2018, 11:54
Не виждам проблем да си добавиш някаква папка от домашната или друга директория към текущия PATH, ето пример от моите настройки:
env | ack -i path
...
PATH=/home/username/bin:/opt/google-cloud-sdk/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/lib/jvm/default/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
...
Тук имам добавени (и то на по-предно място при търсене) една папка bin от домашната папка и една друга от /opt/...

Как става:
ack -i path .zshrc
...
export PATH=$HOME/bin:$PATH
...

Това е за zsh, за bash e: ~/.bashrc

Друг лесен вариант е да създадеш символен линк на файла в /usr/local/bin - "sudo ln -s $HOME/myscripts/calculate /usr/local/bin" и hash -r за да обнови наличните изпълними файлове.

PS: тук ack е заместител на grep.

Честито Рождество и весело изкарване на новогодишните празници :-)