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