Назад | Перейти на главную страницу

Запускайте скрипт из любого места

У меня есть сценарий:

#!/bin/bash
echo "$(dirname $(readlink -e $1))/$(basename $1)"

что сидит здесь: /home/myuser/bin/abspath.sh который имеет разрешения на выполнение.

Если я сбегу echo $PATH Получаю следующее: /usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/myuser/bin

Я хочу иметь возможность из любого каталога позвонить abspath <some_path_here> и он вызывает мой сценарий. Я использую bash, что я делаю не так?

Вы хотите ввести abspath, но программа называется abspath.sh. Проблема не в том, находится ли он в PATH, а в том, что вы просто не используете его имя для его вызова.

У вас есть два варианта:

  1. Тип abspath.sh вместо.
  2. Переименуйте программу в abspath.

Этот код достаточно мал, чтобы я мог закодировать его как функцию оболочки:

abspath() {
    echo "$(dirname "$(readlink -e "$1")")/$(basename "$1")" 
} 

И да, вам нужны все эти цитаты.

установите псевдоним, добавив свою команду в файл .bashrc.

alias abspath='sh /home/myuser/bin/abspath.sh'

И не забудьте указать источник файла.

Я бы переименовал ваш сценарий bash в abspath затем переместите его в bin каталог. Вы не сможете позвонить abspath откуда угодно тогда

Третий вариант - создать псевдоним abspath, указывающий на ваш скрипт abspath.sh.