Как мне сделать команду в Linux с помощью скрипта bash?

Я пытаюсь сделать команду для терминала. У меня есть подготовленный сценарий bash (la.sh), и я хочу просто ввести la, чтобы запустить его. Как я могу получить код, чтобы я мог просто набрать la?

Я пытался поместить его в папку /bin, но безуспешно.

Что я могу сделать, чтобы исправить это?

Я использую последнюю версию Manjaro Gnome.

Большое спасибо!!!

Кстати, сценарий был буквально просто ls.

Это был просто тренировочный сценарий.


person Linux4Life531    schedule 21.02.2020    source источник
comment
Если вы хотите назвать его la, почему вы назвали его la.sh?   -  person ndim    schedule 21.02.2020
comment
Попробуйте добавить псевдоним в файлы .alias или .bashrc вашего пользователя. Кроме того, если вы просто вызываете скрипт, вы можете переименовать его в la и добавить в свой пользовательский путь (также в файле .bashrc)   -  person Cristian Ramon-Cortes    schedule 21.02.2020
comment
Пожалуйста, покажите сценарий - вы получите лучший совет.   -  person Mark Setchell    schedule 21.02.2020
comment
Короткий ответ: если вы хотите ввести la для запуска скрипта, напишите скрипт и сохраните его с именем la в каталоге на вашем PATH и убедитесь, что он выполним с chmod +x path/to/where/you/stored/la.   -  person Mark Setchell    schedule 21.02.2020


Ответы (4)


Предположим, что ваш скрипт хранится под /some/path/la.sh. На мой взгляд, у вас есть несколько решений для достижения вашей цели:

Вариант 1:

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

echo "export PATH=$PATH:/some/path/" >> ~/.bashrc

Затем вы сможете использовать в своем терминале:

$ la.sh

Используя эту опцию, вы можете вызывать la.sh с любыми параметрами, если это необходимо. Если требуется просто вызвать la, вы также можете переименовать скрипт или создать программную ссылку:

mv /some/path/la.sh /some/path/la

or

ln -s /some/path/la.sh /some/path/la

Вариант 2:

Создайте псевдоним для скрипта.

echo "alias la='/some/path/la.sh'" >> ~.bashrc

Затем вы сможете использовать в своем терминале:

$ la

Однако, используя эту опцию, вы не сможете передавать аргументы вашему сценарию (выполняя что-то похожее на la param1 param2), если только вы не определите более сложный псевдоним (псевдоним, использующий функцию в .bashrc, но я думаю, что это выходит за рамки вопрос).

ВАЖНОЕ ПРИМЕЧАНИЕ. Не забывайте перезагружать среду в своем терминале (source .bashrc) или закрывать и снова открывать терминал КАЖДЫЙ РАЗ, когда вы вносите изменения в файл .bashrc. В противном случае вы не сможете увидеть никаких изменений.

person Cristian Ramon-Cortes    schedule 21.02.2020
comment
@CristianRamonCortes: я не думаю, что вариант 1 соответствует требованию, потому что после mv OP не может снова использовать исходное имя la.sh. Если бы он хотел, чтобы команда была доступна только как la, он бы изначально создал ее под этим именем! - person user1934428; 21.02.2020
comment
@ user1934428 Может быть, а может и нет, он этого не заявлял. Однако я обновил свой ответ, используя программную ссылку. - person Cristian Ramon-Cortes; 21.02.2020
comment
Он этого не говорил, но я думаю, что это логично. Кто станет создавать программу под одним именем, если он захочет вызывать ее (только) под другим именем? - person user1934428; 22.02.2020

Файл la.sh должен быть помещен в ваш путь. Затем вы можете создать для него псевдоним.

alias la="la.sh"
person Tony Stark    schedule 21.02.2020

Если вы хотите, чтобы команда была доступна под двумя разными именами (la.sh и la в вашем случае), я рекомендую не использовать псевдоним: псевдоним, определенный в вашем .bashrc, доступен только в интерактивном bash; Если вы запускаете, скажем, интерактивную оболочку, отличную от bash, или пишете bash-скрипт, вы не сможете ее использовать.

Самый общий способ IMO - создать ссылку. Поскольку вы сказали, что уже поместили la.sh в корзину, вы можете создать ссылку в том же каталоге, т.е.

ln /bin/la /bin/la.sh # creates a hard link

or

ln -s /bin/la /bin/la.sh # creates a symbolic link

В вашем случае подойдет и то, и другое. Если вы хотите узнать больше о различиях между жесткими и символическими ссылками, посмотрите, например, здесь.

person user1934428    schedule 21.02.2020

Это работало со смесью всех ответов.

Все, что мне нужно было сделать, это зайти в каталог, в котором находился la.sh. Переименовать его просто в la в виде текстового файла. Запустите chmod 777 la, чтобы сделать его исполняемым для всех. Добавьте его в мой путь с помощью команды export PATH=$PATH:~/Directory/It/Was/In/

Спасибо всем, кто внес свой вклад.

person Linux4Life531    schedule 21.02.2020