как выполнить скрипт bash без ввода ./

как выполнить скрипт bash без ввода ./

Это беспокоило меня очень долгое время, и я действительно устал от этого. Например, есть скрипт под названием testscript, который сравнивает два каталога. В классе профессор может просто ввести

testscript dir1 dir2

чтобы получить вывод, но мне нужно добавить ./ перед тестскриптом и нажать Enter. Затем введите dir1 и dir2 в следующей строке

Как профессор это сделал? Что-то с bashrc? Я никогда не понимаю, как это работает. Если это связано, пожалуйста, объясните простым языком, так как я новичок в Linux. Спасибо!

решение1

Вам необходимо добавить каталог с вашим скриптом в PATHпеременную:

export PATH="$PATH:/path/to/dir"

или вы даже можете добавитьтекущийкаталог в PATH:

export PATH="$PATH:."

У последнего есть некоторыенедостаток безопасностихотя.

решение2

Другой способ сделать это — добавить псевдоним в файл bashrc:

vim ~/.bashrc

Вот как выглядит мой файл bashrc:

# .bashrc

alias coredb='psql -h 172.x.x.x -U jboss jbossdb'
alias psql='psql -h 172.x.x.x -U rkah portal_db'
alias opendb='psql -h 172.x.x.x -U rkah portal_db'


# Source global definitions

if [ -f /etc/bashrc ]; then
        . /etc/bashrc
fi

# User specific aliases and functions
alias menu='bash ./menuScript.sh'
alias vi='vim'

Если вы посмотрите, где написано alias, то это именно то, как вы можете его добавить. Так, например, вы должны ввести:

alias testscript='bash ./testscript.sh'

решение3

В конце файла необходимо поместить следующую строку .bashrc:

PATH=$PATH:.    

Для этого вы можете ввести следующую команду:

echo "PATH=$PATH:." >> ~/.bashrc    

Затем вам следует запустить новую оболочку, чтобы все заработало.

решение4

Другая альтернатива, которую вы можете рассмотреть, — это собрать эти специальные исполняемые скрипты и программы в один каталог и поместить его в оператор PATH. Таким образом, вам не придется использовать ужасную '.' (точку) в переменной PATH, но это все равно сделает то, что вам нужно.

Связанный контент