LINUX.ORG.RU

alias в bash

 , , ,


0

1

есть скрипт на питоне ,запускается он со скрипта bash , при запуске добавляется алиас

alias start_sh="путь"
все обычно,но вот появилась необходимость получать этот путь автоматически то есть что бы вместо статического пути ,указывался путь откуда запущен скрипт,пытался сделать чет тип так :
#!/bin/bash
a=`pwd`
alias start_sh="$a/FILE/start_sh.sh"
notify-send HEADSET "После перемещения основного файла \n нужно повторить запуск"
но что то не работает оно , вообще основная цель сделать так что бы программа вызывалась из консоли,то есть что бы запустить свой скрипт я мог ввести в терминале например start_sh и скрипт запустился ...мож есть у кого какие идеи ?)


Ответ на: комментарий от Kroz

то есть что бы запустить свой скрипт я мог ввести в терминале например start_sh и скрипт запустился ...мож есть у кого какие идеи ?)

Это делается не так.
Создаешь в домашнем каталоге подкаталог bin. И добавляешь его в переменную PATH:

PATH="$PATH:~/bin"

В ~/bin пишешь скрипты, которые нужно запускать. Или символические ссылки на них, если они в других каталогах.

Это - правильный путь.

Kroz ★★★★★
()
Последнее исправление: Kroz (всего исправлений: 1)

Ничего не понятно.

Тебе этот алиас не внутри скрипта, а снаружи что ли нужен? А start_sh.sh — это сам скрипт?

Какой-то ты костыль совсем слепить пытаешься (хотя через source в баше можно решить). Просто клади скрипт в path, или симлинк делай. Вместо

alias start_sh="$a/FILE/start_sh.sh"
тупо:
ln -s "$a/FILE/start_sh.sh" ~/bin/start.sh
Например (при условии, что ~/bin — в PATH).

P. S. теги ubuntu и тем более linux тут явно лишние.

Psych218 ★★★★★
()
Последнее исправление: Psych218 (всего исправлений: 1)

Для отвязки скрипта от пути запуска обычно используются не очень тривиальные вещи, типа такой:

DIR="$( cd "$( dirname $0 )" && pwd )"

Я давно с этим сталкивался, примерный смысл в том, что нужно сделать прозрачным для пользователя запуск посредством
./script.sh

и
/path/to/script.sh

при этом скрипт, например, пишет что-то в свою поддиректорию, или директорию, относительно своей директории

zolden ★★★★★
()
Ответ на: комментарий от zolden

dirname $0

А что, кто-то обещал полный путь в $0, и вообще что-то реальное? Тем же bash-ем можно изменить на что угодно, что вам удобнее посредством exec:

exec -a my_bash /bin/bash
echo $0

my_bash

vodz ★★★★★
()
Ответ на: комментарий от vodz

cпасибо!!!!

всем спасибо за отличные решения!!!!

echo_
() автор топика

Ну и в догонку, в bash есть встроенная переменная, что показывает, думаю догадаешься.

echo $PWD

Pyzia ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.