انجمن‌های فارسی اوبونتو

لطفاً به انجمن‌ها وارد شده و یا جهت ورود ثبت‌نام نمائید

لطفاً جهت ورود نام کاربری و رمز عبورتان را وارد نمائید




نویسنده موضوع: مشکل در bashrc ! ( حل شد )  (دفعات بازدید: 583 بار)

0 کاربر و 1 مهمان درحال مشاهده موضوع.

آفلاین سودو.

  • High Hero Member
  • *
  • ارسال: 3095
  • جنسیت : پسر
  • :(){ :|:& };:
مشکل در bashrc ! ( حل شد )
« : 14 اسفند 1400، 04:33 ب‌ظ »
دوستان این بخشی از bashrc منه که خودم نوشتم و اضافه کردم انتهای bashrc اصلی :

shopt -s autocd
export HISTCONTROL=ignoredups
export LS_COLORS="di=0;93:ln=0;94:ex=0;91:*.txt=0;90:*.jpg=0;92:*.mkv=0;95:*.mp3=0;96"
export PS1="\[$(tput sgr0)\]\[\033[38;5;11m\]\W\[$(tput sgr0)\] \[$(tput sgr0)\]\[\033[38;5;14m\]!\[$(tput sgr0)\] \[$(tput sgr0)\]"

ds(){ df -h|grep sd|awk '/a1/ {print "Root",$2,$3,$4} /a2/ {print "Home",$2,$3,$4}'|column -t;}
g(){ grep -in --color=always ${@:2} $1|sed 's/:/ /';}
l(){ ls -X $@|tail +2|cut -c2-4|sed 's/-//'>~/.fonts/l/p;du -h -d1 $@|sort -k2|tail +2|awk '{print $1}'>~/.fonts/l/s;ls -X $@|tail +2|grep -v ^d|awk '{print $3}'>>~/.fonts/l/s;ls $@|tail +2|awk '/^d/ {print $4,$5,$6}'>~/.fonts/l/n;ls -X $@|tail +2|grep -v ^d|awk '{print $4,$5,$6}'>>~/.fonts/l/n;paste -d: ~/.fonts/l/{p,s,n}>~/.fonts/l/l;e "421:$(du -hs $@|awk '{print $1}'):$(ls $@|tail +2|wc -l)">>~/.fonts/l/l;column -t -s: ~/.fonts/l/l;}
mu(){ free -h|awk '/^M/ {print $3"  "$7}';}

alias ,='v +100 ~/.bashrc'
alias c=.\ ~/.bashrc
alias cp=cp\ -ir
alias d='date "+%a  %d  %b  %Y"'
alias dn=wget
alias dr=mkdir\ -p
alias e=echo\ -e
alias f=touch
alias h=man
alias i='rt apt install -y'
alias ls='ls -AgGh --group-directories-first --color=always --time-style=+'
alias m=mv\ -i
alias n='e "Custom, Bashrc, Kernel & Snap, Thing!\n( zramswap < SIZE=1024\nvisudo < Defaults env_reset,pwfeedback )"'
alias p=chmod
alias pr='rt apt purge --auto-remove -y'
alias q='c;history -c;exit'
alias r=rm\ -fr
alias rt='sudo '
alias s=cat\ -s
alias sc=less\ -s
alias t='gnome-extensions disable ding@rastersoft.com;gnome-extensions disable ubuntu-appindicators@ubuntu.com;gnome-extensions disable ubuntu-dock@ubuntu.com;rt snap remove firefox gnome-3-38-2004 gtk-common-themes snap-store;rt snap remove core20;pr gnome-{calculator,characters,font-viewer,logs,power-manager,screenshot,shell-extension-{appindicator,desktop-icons-ng,ubuntu-dock}} memtest86+ nano seahorse snapd yelp;dr ~/.fonts/l ~/.icons;f ~/.fonts/l/{p,s,n,l};cp ~/Document/After/Vazir.ttf ~/.fonts/;~/.icons/;cp ~/Document/After/Icon.zip .;unzip -q Icon.zip;r Icon.zip;~/Document/After/Extension/;gnome-extensions install App\ Grid\ Tweaks.zip;gnome-extensions install Custom\ Hot\ Corners.zip;gnome-extensions install Just\ Perfection.zip;cp ~/Document/After/Hidden/* ~/.local/share/applications/;e "set hlsearch\nset mouse=a\nset nu\nset ts=3\nset wrap">~/.vimrc;rt ufw enable;rt v /etc/fstab;rt visudo;rt r /etc/xml /swapfile;~'
alias to='rt apt-mark hold snapd ttf-mscorefonts-installer unrar yelp;pr linux-image-5.13.0-19-generic;i epiphany-browser gnome-tweaks python totem ubuntu-restricted-extras vim zram-tools;rt systemctl enable zramswap.service;rt v /etc/default/zramswap'
alias u='rt apt update;rt apt upgrade -y;rt apt full-upgrade -y;rt apt autoremove -y;rt apt clean'
alias up='uptime -p|cut -c 4-'
alias v=vim
alias w=type
clear;r ~/{.bash_history}

۱ . همونطوری که میبیند من برای اینکه بعد از هر بار تغییر توی bashrc لازم نباشه ببندم و باز کنم ترمینالو ، آلیاس c رو ساختم که دوباره بررسی کنه bashrc رو و همزمان صفحه رو هم تمیز کنه و فایل تاریخچه بش رو هم پاک کنه !
          الف . نمیشه bash_history رو غیر فعال کرد که هر بار پاکش نکنم ؟ تاریخچه همون نشستی که دارم باهاش کار میکنم رو میخوام داشته باشم اما نمیخوام ذخیره بشه ! فقط همون ترمینالی که بازه کافیه برام ، نمیخوام قبلی ها نگه داشته بشه !
          ب . همونطور که مشخصه وقتی یک ترمینال باز میکنم خب باید بخونه و همه آلیاس ها و فانکشن ها رو بشناسه و فعال کنه دیگه درسته ؟ اما مثلا فانکشن l به درستی کار نمیکنه ( یه جور ls شخصی سازی شده برای خودم ساختم با چند تا ترفند ) ! برای همین وقتی وارد ترمینال میشم مجبورم یبار c رو بزنم تا دوباره read & execute کنه bashrc رو ! ممکنه بخاطر این باشه که توی فانکشنش چند تا آلیاس هم استفاده کردم ؟
۲ .  فایل ها و پوشه های ( .lesshst و .sudo_as_admin_successful و .vim/ و .viminfo و .profile و .bash_logout ) چین و چیکار میکنن ؟ یه فایل هم از لحاظ اسم شبیه به .lesshst بوجود میاد گاهی اوقات که تو اسمش wget داره !
۳ . از نحوه کار shellcheck هم سر درنیاوردم ! البته اگه مال همین کاره !

پیشاپیش سپاس !
« آخرین ویرایش: 23 اسفند 1400، 01:08 ب‌ظ توسط / sudo rm -rf »
آرچ و گنوم!

آفلاین Dragon-

  • عضو کاربران ایرانی اوبونتو
  • *
  • ارسال: 5125
  • جنسیت : پسر
پاسخ : مشکل در bashrc !
« پاسخ #1 : 17 اسفند 1400، 12:02 ق‌ظ »
۱- الف
فکر کنم اگه متغییر HISTFILESIZE رو برابر 0 قرار بدید، چیزی که می‌خواهید انجام میشه.

۱- ب
مشکل از اینجاست که alias هایی که توی تابع استفاده کردید، بعد از خود تابع تعریف شدند در نتیجه درست کار نمی‌کنه. اگه تابع مورد نظر رو بعد از alias ها تعریف کنید، مشکل حل میشه.

۲-
عدم وجود فایل sudo _as_admin. باعث میشه وقتی که ترمینال رو باز کردید، یه پیام اون بالا بیاد و از شما بخواهد که یه دستور رو با sudo اجرا کنید تا مطمئن بشید که دسترسی استفاده از sudo دارید. فکر کنم همینطور باعث میشه که وقتی که sudo رو اجرا می‌کنید، سه تا راهنمایی کوچک (بیشتر اخلاقی تا راهنمای کار با sudo) نمایش بده.
با اولین اجرای موفقیت آمیز sudo، اون فایل ایجاد میشه و اون پیغام‌ها نمایش داده نمیشن.
فکر کنم lesshst. برای این هست تا تاریخچه‌های جست‌و‌جوی شما توی less، ذخیره بشن.

profile. مربوط به bash و فکر کنم sh باشه. وقتی که پوسته توی حالت login باز میشه، این خونده و تنظیماتش مورد استفاده قرار می‌گیرن. چیزی شبیه bashrc. هست با این تفاوت که فقط وقتی استفاده میشه که پوسته به صورت login باز شده باشه.

وقتی bash رو می‌بندید، درست قبلش، bash_logout. اجرا میشه تا یه سری کار‌ها رو انجام بده، مثلا صفحه رو پاک کنه و چنتا کار دیگه. اسکریپت کوچکی هست، راحت می‌تونید عملکرد اون رو متوجه بشید؛ اگه پایه‌های اسکریپت نویسی با bash رو بدونید. فقط وقتی اجرا میشه که bash توی حالت login اجرا شده.

اون که مربوط به wget هست وقتی ایجاد میشه که فکر کنم wget به مشکل می‌خوره یا وسط کار، متوقفش می‌کنید.

در مورد viminfo. و vim. چیزی نمی‌دونم.

۳- بیشتر برای کمک توی نوشتن اسکریپت‌های بزرگ استفاده میشه. مشکلات اسکریپت‌ها رو میگه، مثل مشکلات نگارشی یا چیز‌هایی که ممکنه عملکردی متفاوت از انتظار داشته باشند. در مورد خطا‌های منطقی، نمی‌تونه کار زیادی انجام بده. یه جورایی می‌تونید یه linter برای اسکریپت‌های bash و sh  به حساب بیاریدش. (نمی‌دونم از بقیه پوسته‌ها مثل zsh یا ksh هم پشتیبانی می‌کنه یا نه.)
میدونید که زکات علم نشر آن است

آفلاین سودو.

  • High Hero Member
  • *
  • ارسال: 3095
  • جنسیت : پسر
  • :(){ :|:& };:
پاسخ : مشکل در bashrc !
« پاسخ #2 : 17 اسفند 1400، 02:36 ق‌ظ »
خیلی خیلی ممنونم ، لحظه ب لحظه از شما چیز یاد گرفتم تو این انجمن 🙏
آرچ و گنوم!

آفلاین سودو.

  • High Hero Member
  • *
  • ارسال: 3095
  • جنسیت : پسر
  • :(){ :|:& };:
پاسخ : مشکل در bashrc !
« پاسخ #3 : 17 اسفند 1400، 06:40 ب‌ظ »
نقل‌قول
فکر کنم اگه متغییر HISTFILESIZE رو برابر 0 قرار بدید، چیزی که می‌خواهید انجام میشه.
بازم ساخته میشه اما توش چیزی نمیریزه !
نقل‌قول
وقتی bash رو می‌بندید، درست قبلش، bash_logout. اجرا میشه تا یه سری کار‌ها رو انجام بده، مثلا صفحه رو پاک کنه و چنتا کار دیگه. اسکریپت کوچکی هست، راحت می‌تونید عملکرد اون رو متوجه بشید؛ اگه پایه‌های اسکریپت نویسی با bash رو بدونید. فقط وقتی اجرا میشه که bash توی حالت login اجرا شده.
اون یسری کارای دیگه چین ؟ چون پاک کردن صفحه رو خودم همیشه میکنم !
آرچ و گنوم!

آفلاین Dragon-

  • عضو کاربران ایرانی اوبونتو
  • *
  • ارسال: 5125
  • جنسیت : پسر
پاسخ : مشکل در bashrc !
« پاسخ #4 : 17 اسفند 1400، 07:57 ب‌ظ »
اون یسری کارای دیگه چین ؟ چون پاک کردن صفحه رو خودم همیشه میکنم !
بازش کنید و ببینید چیکار می‌کنه.
« آخرین ویرایش: 17 اسفند 1400، 09:31 ب‌ظ توسط Dragon- »
میدونید که زکات علم نشر آن است

آفلاین سودو.

  • High Hero Member
  • *
  • ارسال: 3095
  • جنسیت : پسر
  • :(){ :|:& };:
پاسخ : مشکل در bashrc !
« پاسخ #5 : 17 اسفند 1400، 09:16 ب‌ظ »
اون یسری کارای دیگه چین ؟ چون پاک کردن صفحه رو خودم همیشه میکنم !
بتزش کنید و ببینید چیکار می‌کنه.
عذر میخوام اما میشه بگید چجوری محتویات یه نرم افزار رو بخونم ؟!
این اسکریپ یه نرم افزار رو به ادرس زیر اجرا میکنه :
/usr/bin/clear_console
آرچ و گنوم!

آفلاین Dragon-

  • عضو کاربران ایرانی اوبونتو
  • *
  • ارسال: 5125
  • جنسیت : پسر
پاسخ : مشکل در bashrc !
« پاسخ #6 : 17 اسفند 1400، 10:27 ب‌ظ »
man مربوط به اون دستور رو ببینید.
man clear_console
میدونید که زکات علم نشر آن است

آفلاین سودو.

  • High Hero Member
  • *
  • ارسال: 3095
  • جنسیت : پسر
  • :(){ :|:& };:
پاسخ : مشکل در bashrc !
« پاسخ #7 : 17 اسفند 1400، 10:30 ب‌ظ »
man مربوط به اون دستور رو ببینید.
man clear_console
چرا بعنوان یک نرم افزار معمولی در نظرش نگرفتم 😅🤦 که میتونه یه man داشته باشه آخه ؟

( چون به جای فراخونیش با اسمش ، با ادرسش فراخونی شده توی .bash_logout ، چرا ؟ )
« آخرین ویرایش: 17 اسفند 1400، 10:33 ب‌ظ توسط / sudo rm -rf »
آرچ و گنوم!

آفلاین Dragon-

  • عضو کاربران ایرانی اوبونتو
  • *
  • ارسال: 5125
  • جنسیت : پسر
پاسخ : مشکل در bashrc !
« پاسخ #8 : 18 اسفند 1400، 01:06 ق‌ظ »
دستوراتی که توی دایرکتوری‌های /bin/ /sbin/ /usr/bin/ و /usr/sbin/ هستند، معمولا همیشه man دارند.
در مورد اینکه چرا مستقیم با دادن مسیر، اجرا شده، فکر می‌کنم به خاطر این باشه که ممکنه متغیر PATH درست نباشه و چنین دستوری پیدا نشه. ولی مطمئن نیستم.
« آخرین ویرایش: 23 اسفند 1400، 01:33 ب‌ظ توسط Dragon- »
میدونید که زکات علم نشر آن است

آفلاین سودو.

  • High Hero Member
  • *
  • ارسال: 3095
  • جنسیت : پسر
  • :(){ :|:& };:
پاسخ : مشکل در bashrc !
« پاسخ #9 : 18 اسفند 1400، 08:50 ب‌ظ »
خیلی ممنون !

ی سوال ؟ autopurge تو apt چیکار میکنه ؟ توی man سرچ کردم نبود !

واسه این سوال کوچیک نخواستم تاپیک جدید باز کنم : )
آرچ و گنوم!

آفلاین Dragon-

  • عضو کاربران ایرانی اوبونتو
  • *
  • ارسال: 5125
  • جنسیت : پسر
پاسخ : مشکل در bashrc !
« پاسخ #10 : 18 اسفند 1400، 10:49 ب‌ظ »
فکر کنم کاری که می‌کنه این هست که بسته‌هایی که remove شدند اما purge نشدند رو purge می‌کنه‌. کار‌های autoremove رو هم انجام میده. مطمئن نیستم. شاید هم عملکرد autoremove رو داره. توی مستندات apt هم ندیدم بهش اشاره بشه.
میدونید که زکات علم نشر آن است

آفلاین سودو.

  • High Hero Member
  • *
  • ارسال: 3095
  • جنسیت : پسر
  • :(){ :|:& };:
پاسخ : مشکل در bashrc !
« پاسخ #11 : 23 اسفند 1400، 01:08 ب‌ظ »
فکر کنم کاری که می‌کنه این هست که بسته‌هایی که remove شدند اما purge نشدند رو purge می‌کنه‌. کار‌های autoremove رو هم انجام میده. مطمئن نیستم. شاید هم عملکرد autoremove رو داره. توی مستندات apt هم ندیدم بهش اشاره بشه.

خیلی تشکر جناب -dragon
آرچ و گنوم!