У меня есть сценарий оболочки с именем remote_execution.sh. Возможно ли, что я просто набираю remote_execution
в любой из папок и запускает выполнение, как gcc, vi или любая такая команда?Как создать команду unix
Заранее спасибо.
У меня есть сценарий оболочки с именем remote_execution.sh. Возможно ли, что я просто набираю remote_execution
в любой из папок и запускает выполнение, как gcc, vi или любая такая команда?Как создать команду unix
Заранее спасибо.
Добавить каталог, в котором remote_execution.sh находится в вашей переменной $PATH
. Кроме того, если вы хотите, чтобы быть запущен без концовки .sh
, переименовать сценарий к remote_execution
У вас есть 3 варианта: вы либо скопировать сценарий в одном из каталогов, найденных в PATH
или создать символическую ссылку для сценария там (ln -s
) или добавьте текущий каталог сценария оболочки в PATH
(export PATH=$PATH:dir
).
Чтобы узнать, что PATH
выглядит как echo $PATH
.
Следующие четыре шага должны позволить запускать remote_execution
из любого места в файловой системе:
remote_execution
, удаляя .sh
расширениеДобавить в «shebang» линию к началу файл
#!/bin/bash
Изменение permissions файла, так что исполняемый файл (см man chmod
)
chmod u+x remote_execution
Переместить файл в папку в вашем PATH
так что это «работает в любой папке». В догадке:
mv remote_execution /usr/local/bin
Откуда вы знаете, что это скрипт bash? Откуда вы знаете, что отсутствует shebang? Что он еще не выполним? Что это не в ПУТЕ? Разве он не должен делать «sudo mv remote_execution/usr/local/bin» для записи в/usr/local/bin? –
@userunknown Это называется вероятностью. Были сделаны предположения, и они были безопасными предположениями. – meagar
Вы можете поместить этот скрипт в любой папке, изображаемого $PATH
$ echo $PATH
[[email protected] test]$ echo $PATH
/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/home/andreas/bin
переименовать скрипт для remote_execution
и положить #!/bin/sh
в первой строке. Также chmod, чтобы убедиться, что он выполним
$ chmod 755 remote_execution
Да. У вас есть два варианта: поместите скрипт где-нибудь на свой путь или добавьте каталог сценария в свой путь в ~/.profile
.
Другой вариант установлен псевдоним
alias remote_execution="fullpath to remote_execution.sh"
Каждый файл имеет свои собственные биты разрешения. Вы должны изменить разрешения файла, чтобы он был выполнен.Поэтому используйте команду -
chmod +x remote_execution
Надеяться вы добавили «shebang» строку в верхней части файла
#!/bin/bash
При вызове сценария с явным интерпретатором, как
bash remote_execution.sh
/bin/bash remote_execution.sh
dash remote_execution.sh
sh remote_execution.sh
ваш выбранный интерпретатор используется, независимо от того, что говорит shebang, что является просто комментарием. В противном случае ядро ищет shebang и запускает программу с указанным им интерпретатором. Если используется символ Шебанга, то вне зависимости от того, какое расширение!
Ваша оболочка - это программа. Он имеет переменные, один из них $ PATH
$PATH
содержит двоеточиями список каталогов, разделенных для поиска команд
Если вы хотите, чтобы он просто введите $ echo $PATH
в терминале.
На моем компьютере она показывает
[email protected]:~$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
Это означает, что, если я набираю команду как GCC или VIM он ищет в списке выше каталогов.
Теперь просто скопируйте сценарий оболочки в любую из вышеуказанных папок, чтобы получить доступ к нему из любого места.
наверняка это должно быть обманом? – poolie
На самом деле это не заслуживает ответа, но вы можете создать каталог специально для своих скриптов и добавить этот каталог в свой $ PATH. Google «добавьте каталог в $ PATH» для получения информации об этом. – CoffeeRain