בעקבות הפוסט המעולה של אילן על שרשורים של פקודות בבאש, נזכרתי בבעיה שצצה לי בעבודה במערכות מבוזרות.כאשר אתה רוצה להקל על עצמך בטרמינל אתה הולך ויוצר alias.
הדרך הנכונה לעשות את זה היא לערוך את הקובץ
vi ~/.bashrc
ובסופו להוסיף (דוגמא בלבד):
alias starcraft="wine /media/data/games/Starcraft/StarCraft.exe"
alias vi="vim"
alias ll="ls -l"
alias lll="ls -hl"
שימו לב למשהו חשוב – אין צורך להוסיף את האינפורמציה של הוספת פרמטרים נוספים, אפשר לשים אותם והם יתווספו בסוף השורה הנ"ל כמו:
lll ~/
שבעצם במערכת מזוהה כ
ls -hl ~/
הערה: יש לזכור שזה לא יפעל עד שלא תתחבר מחדש לbash.
הבעיה שלי עם הדרך הזו היא שזה לא עובד במערכת מבוזרת או תחת cron. בעצם המערכת לא מפעילה bash ברגע שהיא מפעילה cron או משהו שמגיע בssh ולכן לא תזהה את הפעולות שכתובות תחת alias.
אני פתרתי את זה בצורה הבאה:
ברוב המערכות המבוזרות יש nfs שרוב המכונות (או כל המכונות) מקושרות אליו, שם ניתן ליצור ספריית סקריפטים. כל פקודה שקיימת בalias או שאתם רוצים שיהיה אפשר להפעיל פשוט יוצרים קובץ טקסט עם הפקודה ושמים אותו בספרייה, לדוגמא:
cat > /nfs/scripts/lll #!/bin/bash
ls -lh $@
יש לשים לב ל @$ שחשוב מאד כיוון שהוא מכיל את כל הפרמטרים שקיבלת מהטרמינל (כפי שרשמתי מקודם בalias לא צריך את זה).
לאחר מכן צריך להוסיף אפשרות הפעלה לקובץ:
chmod +x /nfs/scripts
ובסוף יש להוסיף את הספרייה לרשימת הספריות ששם המערכת מחפשת קבצי הפעלה:
echo "PATH=$PATH:/nfs/scripts/" >> /etc/profile
עכשיו כאשר תפעילו את הפקודות דרך ssh או cron הפקודות יזוהו.
אוף, חשבתי שהכוונה היא לציטוטים מצחיקים מ bash.org