Маленькие хитрости пользовательских скриптов и не только
Я не знаю как у тебя %username% читающего данный пост, а у меня лично тьма скриптов (некоторые еще и связаны друг с другом). Начиная от простых скриптов которые использую для вывода какой либо информации на панель wmii и заканчивая крайне сложными скриптами. Даже соединение с интернет у меня с использованием скрипта. В этом посте я напишу пару хитростей которые должны облегчить вам жизнь.
Учитывая что я постоянно сижу за компьютером, а некоторые скрипты мне бывают нужны крайне часто, бывает очень муторно каждый раз писать путь к ним. Как нибудь так sh ~/.scripts/script_name.sh
. Это просто крайне ужасно. Что бы не мучиться так каждый раз, я сделал по другому. Создал папку bin в домашней директории и перекинул все скрипты туда. Затем в .bashrc
(или .zshrc
что у вас там =] )добавляем к переменной PATH еще один путь:
export PATH="\$PATH:\$USER/bin"
Теперь перезаходим в систему или открываем новую консоль и любой скрипт доступен просто набрав его имя сразу в консоли или через программу запуска - dmenu или gmrun.
Так же не забываем про алиасы. У меня их целая куча, и они заметно облегчают жизнь. Например s - sudo, или sv - sudo vim. Тоже крайне облегчает жизнь. Добавить просто все в тот же .bashrc
пишем:
alias s="sudo"
alias sv="sudo vim"
В общем это не такая и хитрость. Каждый более менее опытный Linux пользователь знает об этом. Единственное что можно добавить к этому, так это то, что если у вас много пользователей, и всем им нужные эти скрипты и столь же быстрый доступ к ним. То можно в каталоге /etc/skel
, в файле .bashrc дописать тот же путь что был выше. И любой файл и каталог которые есть в этой папке, так же будет скопирован в папку нового пользователя.
Некоторым скриптам, нужны права супер пользователя для выполнения. И тут я тоже решил себе упросить жизнь. Во первых снова можно использовать sudo, но это не лучший выход по соображениям безопасности. Лучше классический su в данном способе. Просто в начале скрипта, или в месте где нужна права рута пишем su -, а затем когда они уже не нужны просто exit. В данном случае в нужные момент скрипт спросит пароль, а потом закончит сессию рут пользователя. Так же можно создать небольшую проверку и в случае если вы не рут, то завершить работу скрипта:
ROOT_UID=0 # $UID root-а всегда равен 0.
if [ "\$UID" -eq "\$ROOT_UID" ]
then
echo "Все в порядке, я root. Продолжаем."
else
echo "Вы должны быть супер пользователем для выполнения скрипта!"
exit 1; # Завершаем работу с ошибкой.
fi
Как я уже писал выше. Я крайне ленив. И на каждый новый скрипт писать chmod +x мне тоже крайне лениво. Посему стоит на все новые файлы в этом каталоге устанавливать его автоматом, благо если мне не изменяет память, даже очень старые ядра и файловая система ext2 позволяют это сделать:
cd \~/bin
umask +x
Теперь достаточно просто создать скрипт в каталоге ~/bin
и не надо chmod +x
и писать полный путь до него. Так же например в conky или dzen2 так же не нужно писать их полный путь.
У всего этого есть один лишь минус: если не подходить к кому с пол года, а потом пытаться понять как все это работает, то можно сильно запутаться =]