У меня есть сценарий:
#!/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, а в том, что вы просто не используете его имя для его вызова.
У вас есть два варианта:
abspath.sh
вместо.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.