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

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

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


ارائه ۲۴٫۱۰ اوبونتو منتشر شد 🎉

نویسنده موضوع: خطای syntax error در ترمینال  (دفعات بازدید: 3935 بار)

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

آفلاین nino

  • Full Member
  • *
  • ارسال: 224
  • جنسیت : پسر
    • Gitlab
پاسخ : خطای syntax error در ترمینال
« پاسخ #15 : 25 خرداد 1397، 09:20 ب‌ظ »
شرمنده یه مشکلی پیش اومد مجبور شدم یه لحظه برم ...
اختیار دارید ...

برای چک کردن حدسم یه فایل به اسم src ایجاد کنین و محتویات زیر رو توی اون قرار بدین :
#!/bin/bash
_upvar()
{
 echo $PATH
}
_upvar
حالا با دستور زیر اونو سورس کنین :
source src
خروجی:
/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
این فایل src که فرمودید باید در مسیر خاصی ساخته بشه یا فقط برای تسته؟
...

آفلاین علی رزم دیده

  • عضو کاربران ایرانی اوبونتو
  • *
  • ارسال: 1244
  • جنسیت : پسر
  • ali76 سابق
پاسخ : خطای syntax error در ترمینال
« پاسخ #16 : 25 خرداد 1397، 10:48 ب‌ظ »
نه فقط برای تست هستش.

والا من فعلاً که چیز خاصی به ذهنم نمی رسه ولی شما خروجی این دستور رو هم بذارین :
echo $BASH_VERSION
echo $BASH_COMPLETION_VERSINFO

آفلاین nino

  • Full Member
  • *
  • ارسال: 224
  • جنسیت : پسر
    • Gitlab
پاسخ : خطای syntax error در ترمینال
« پاسخ #17 : 25 خرداد 1397، 11:03 ب‌ظ »
والا من فعلاً که چیز خاصی به ذهنم نمی رسه ولی شما خروجی این دستور رو هم بذارین :
echo $BASH_VERSION
echo $BASH_COMPLETION_VERSINFO
خروجی هاشون به ترتیب اینه:
4.4.23(1)-release
2

در یکی از وبسایت ها نوشته بود که در فایل bash_completion، عبارت (1) باید با (2) جایگزین بشه اما در پرانتز گفته بود که انجام این کار پیشنهاد نمی شه:
(1) [[ ${!2} == \$* ]] && eval $2=${!2}
(2) [[ ${!2} == \$\'* ]] && eval $2=${!2}
نظر شما چیه؟
(نشانی وبسایت: https://unix.stackexchange.com/questions/164231/how-to-fix-corrupted-bash-completion-in-command-substitution)
...

آفلاین علی رزم دیده

  • عضو کاربران ایرانی اوبونتو
  • *
  • ارسال: 1244
  • جنسیت : پسر
  • ali76 سابق
پاسخ : خطای syntax error در ترمینال
« پاسخ #18 : 25 خرداد 1397، 11:16 ب‌ظ »
واقعاً عجیبه چون نسخه ی بش من هم دقیقاً همون نسخه هستش.

در یکی از وبسایت ها نوشته بود که در فایل bash_completion، عبارت (1) باید با (2) جایگزین بشه اما در پرانتز گفته بود که انجام این کار پیشنهاد نمی شه:
(1) [[ ${!2} == \$* ]] && eval $2=${!2}
(2) [[ ${!2} == \$\'* ]] && eval $2=${!2}
نظر شما چیه؟
(نشانی وبسایت: https://unix.stackexchange.com/questions/164231/how-to-fix-corrupted-bash-completion-in-command-substitution)
والا مشکل شما با اون فرق داره مشکل شما توی این بلوک هستش :
#!/bin/bash
_upvar()
{
    if unset -v "$1"; then           # Unset & validate varname
        if (( $# == 2 )); then
            eval $1=\"\$2\"          # Return single value
        else
            eval $1=\(\"\${@:2}\"\)  # Return array
        fi
    fi
}
که وقتی با source تست کردین خطا دادش ولی توی این قسمت ما چیزی به شکل [[ ${!2} == \$* ]] && eval $2=${!2} نداریم.

علاوه بر این الان من با اون فایل هیچ مشکلی ندارم و دقیقاً با همون خطوط هیچ خطایی دریافت نمی کنم و راحت source می گیرم.
با توجه به اینکه نسخه ی bash ما هم با هم دیگه یکی هستش تنها موردی که به ذهنم می رسه env ها هستش. شاید چیزی ست شده که باعث این مشکل می شه.

به عنوان تیر آخر خروجی این دستور رو هم بذارین:
env

آفلاین nino

  • Full Member
  • *
  • ارسال: 224
  • جنسیت : پسر
    • Gitlab
پاسخ : خطای syntax error در ترمینال
« پاسخ #19 : 25 خرداد 1397، 11:22 ب‌ظ »
با توجه به اینکه نسخه ی bash ما هم با هم دیگه یکی هستش تنها موردی که به ذهنم می رسه env ها هستش. شاید چیزی ست شده که باعث این مشکل می شه.

به عنوان تیر آخر خروجی این دستور رو هم بذارین:
env

شما از چه توزیع و نسخه ای استفاده می کنید؟

اینم به عنوان تیر آخر  [-o<
خروجی env:
LANG=en_US.UTF-8
DISPLAY=:0
GTK_OVERLAY_SCROLLING=0
COLORTERM=truecolor
DESKTOP_AUTOSTART_ID=106259f7ba9703f705152906787264940200000007170034
MOZ_PLUGIN_PATH=/usr/lib/mozilla/plugins
XDG_VTNR=7
XDG_SESSION_ID=c2
XDG_GREETER_DATA_DIR=/var/lib/lightdm-data/nino
USER=nino
DESKTOP_SESSION=cinnamon
GNOME_TERMINAL_SCREEN=/org/gnome/Terminal/screen/20bbd4ca_3a59_442a_b8b6_050893bff6e2
PWD=/home/nino
HOME=/home/nino
XDG_SESSION_TYPE=x11
XDG_SESSION_DESKTOP=cinnamon
GTK_MODULES=canberra-gtk-module
MAIL=/var/spool/mail/nino
TERM=xterm-256color
SHELL=/bin/bash
VTE_VERSION=5202
XDG_SEAT_PATH=/org/freedesktop/DisplayManager/Seat0
XDG_CURRENT_DESKTOP=X-Cinnamon
GNOME_TERMINAL_SERVICE=:1.76512
XDG_SEAT=seat0
SHLVL=1
GDMSESSION=cinnamon
GNOME_DESKTOP_SESSION_ID=this-is-deprecated
LOGNAME=nino
DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus
XDG_RUNTIME_DIR=/run/user/1000
XAUTHORITY=/home/nino/.Xauthority
XDG_SESSION_PATH=/org/freedesktop/DisplayManager/Session0
PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
SESSION_MANAGER=local/arch:@/tmp/.ICE-unix/717,unix/arch:/tmp/.ICE-unix/717
_=/usr/bin/env
« آخرین ویرایش: 25 خرداد 1397، 11:24 ب‌ظ توسط Nino »
...

آفلاین علی رزم دیده

  • عضو کاربران ایرانی اوبونتو
  • *
  • ارسال: 1244
  • جنسیت : پسر
  • ali76 سابق
پاسخ : خطای syntax error در ترمینال
« پاسخ #20 : 25 خرداد 1397، 11:51 ب‌ظ »
توزیع من دبیان sid هستش ولی من اون بلوک رو توی ماشین مجازی روی آرچ هم تست کردم و باز هم خطایی دریافت نکردم.
دقیق با همون خروجی env و path و نسخه ی bash و ...

من چیز خاصی فعلاً به ذهنم نمی رسه بازم صبر کنین بچه ها کمکتون می کنن. منم اگه چیز خاصی به ذهنم رسید ارسال می کنم.

آفلاین علی رزم دیده

  • عضو کاربران ایرانی اوبونتو
  • *
  • ارسال: 1244
  • جنسیت : پسر
  • ali76 سابق
پاسخ : خطای syntax error در ترمینال
« پاسخ #21 : 25 خرداد 1397، 11:57 ب‌ظ »
لطفاً خروجی این رو هم اضافه کنین :
cat -net /usr/share/bash-completion/bash_completion | head -n 173تا تمام کارکتر هایی که وجود دارن به نمایش دربیان. شاید قبل یا بعد { یه کارکتر تبی چیزی باشه به نمایش در میاد.

آفلاین nino

  • Full Member
  • *
  • ارسال: 224
  • جنسیت : پسر
    • Gitlab
پاسخ : خطای syntax error در ترمینال
« پاسخ #22 : 26 خرداد 1397، 12:05 ق‌ظ »
لطفاً خروجی این رو هم اضافه کنین :
cat -net /usr/share/bash-completion/bash_completion | head -n 173تا تمام کارکتر هایی که وجود دارن به نمایش دربیان. شاید قبل یا بعد { یه کارکتر تبی چیزی باشه به نمایش در میاد.
خروجی:
     1 #                                                          -*- shell-script -*-$
     2 #$
     3 #   bash_completion - programmable completion functions for bash 4.1+$
     4 #$
     5 #   Copyright M-BM-) 2006-2008, Ian Macdonald <ian@caliban.org>$
     6 #             M-BM-) 2009-2018, Bash Completion Maintainers$
     7 #$
     8 #   This program is free software; you can redistribute it and/or modify$
     9 #   it under the terms of the GNU General Public License as published by$
    10 #   the Free Software Foundation; either version 2, or (at your option)$
    11 #   any later version.$
    12 #$
    13 #   This program is distributed in the hope that it will be useful,$
    14 #   but WITHOUT ANY WARRANTY; without even the implied warranty of$
    15 #   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the$
    16 #   GNU General Public License for more details.$
    17 #$
    18 #   You should have received a copy of the GNU General Public License$
    19 #   along with this program; if not, write to the Free Software Foundation,$
    20 #   Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.$
    21 #$
    22 #   The latest version of this software can be obtained here:$
    23 #$
    24 #   https://github.com/scop/bash-completion$
    25 $
    26 BASH_COMPLETION_VERSINFO=(2 8)$
    27 $
    28 if [[ $- == *v* ]]; then$
    29     BASH_COMPLETION_ORIGINAL_V_VALUE="-v"$
    30 else$
    31     BASH_COMPLETION_ORIGINAL_V_VALUE="+v"$
    32 fi$
    33 $
    34 if [[ ${BASH_COMPLETION_DEBUG-} ]]; then$
    35     set -v$
    36 else$
    37     set +v$
    38 fi$
    39 $
    40 # Blacklisted completions, causing problems with our code.$
    41 #$
    42 _blacklist_glob='@(acroread.sh)'$
    43 $
    44 # Turn on extended globbing and programmable completion$
    45 shopt -s extglob progcomp$
    46 $
    47 # A lot of the following one-liners were taken directly from the$
    48 # completion examples provided with the bash 2.04 source distribution$
    49 $
    50 # start of section containing compspecs that can be handled within bash$
    51 $
    52 # user commands see only users$
    53 complete -u groups slay w sux$
    54 $
    55 # bg completes with stopped jobs$
    56 complete -A stopped -P '"%' -S '"' bg$
    57 $
    58 # other job commands$
    59 complete -j -P '"%' -S '"' fg jobs disown$
    60 $
    61 # readonly and unset complete with shell variables$
    62 complete -v readonly unset$
    63 $
    64 # set completes with set options$
    65 complete -A setopt set$
    66 $
    67 # shopt completes with shopt options$
    68 complete -A shopt shopt$
    69 $
    70 # helptopics$
    71 complete -A helptopic help$
    72 $
    73 # unalias completes with aliases$
    74 complete -a unalias$
    75 $
    76 # type and which complete on commands$
    77 complete -c command type which$
    78 $
    79 # builtin completes on builtins$
    80 complete -b builtin$
    81 $
    82 # start of section containing completion functions called by other functions$
    83 $
    84 # Check if we're running on the given userland$
    85 # @param $1 userland to check for$
    86 _userland()$
    87 {$
    88     local userland=$( uname -s )$
    89     [[ $userland == @(Linux|GNU/*) ]] && userland=GNU$
    90     [[ $userland == $1 ]]$
    91 }$
    92 $
    93 # This function sets correct SysV init directories$
    94 #$
    95 _sysvdirs()$
    96 {$
    97     sysvdirs=( )$
    98     [[ -d /etc/rc.d/init.d ]] && sysvdirs+=( /etc/rc.d/init.d )$
    99     [[ -d /etc/init.d ]] && sysvdirs+=( /etc/init.d )$
   100     # Slackware uses /etc/rc.d$
   101     [[ -f /etc/slackware-version ]] && sysvdirs=( /etc/rc.d )$
   102 }$
   103 $
   104 # This function checks whether we have a given program on the system.$
   105 #$
   106 _have()$
   107 {$
   108     # Completions for system administrator commands are installed as well in$
   109     # case completion is attempted via `sudo command ...'.$
   110     PATH=$PATH:/usr/sbin:/sbin:/usr/local/sbin type $1 &>/dev/null$
   111 }$
   112 $
   113 # Backwards compatibility for compat completions that use have().$
   114 # @deprecated should no longer be used; generally not needed with dynamically$
   115 #             loaded completions, and _have is suitable for runtime use.$
   116 have()$
   117 {$
   118     unset -v have$
   119     _have $1 && have=yes$
   120 }$
   121 $
   122 # This function checks whether a given readline variable$
   123 # is `on'.$
   124 #$
   125 _rl_enabled()$
   126 {$
   127     [[ "$( bind -v )" == *$1+([[:space:]])on* ]]$
   128 }$
   129 $
   130 # This function shell-quotes the argument$
   131 quote()$
   132 {$
   133     local quoted=${1//\'/\'\\\'\'}$
   134     printf "'%s'" "$quoted"$
   135 }$
   136 $
   137 # @see _quote_readline_by_ref()$
   138 quote_readline()$
   139 {$
   140     local quoted$
   141     _quote_readline_by_ref "$1" ret$
   142     printf %s "$ret"$
   143 } # quote_readline()$
   144 $
   145 $
   146 # This function shell-dequotes the argument$
   147 dequote()$
   148 {$
   149     eval printf %s "$1" 2> /dev/null$
   150 }$
   151 $
   152 $
   153 # Assign variable one scope above the caller$
   154 # Usage: local "$1" && _upvar $1 "value(s)"$
   155 # Param: $1  Variable name to assign value to$
   156 # Param: $*  Value(s) to assign.  If multiple values, an array is$
   157 #            assigned, otherwise a single value is assigned.$
   158 # NOTE: For assigning multiple variables, use '_upvars'.  Do NOT$
   159 #       use multiple '_upvar' calls, since one '_upvar' call might$
   160 #       reassign a variable to be used by another '_upvar' call.$
   161 # See: http://fvue.nl/wiki/Bash:_Passing_variables_by_reference$
   162 _upvar()$
   163 {$
   164     if unset -v "$1"; then           # Unset & validate varname$
   165         if (( $# == 2 )); then$
   166             eval $1=\"\$2\"          # Return single value$
   167         else$
   168             eval $1=\(\"\${@:2}\"\)  # Return array$
   169         fi$
   170     fi$
   171 }$
   172 $
   173 $
« آخرین ویرایش: 26 خرداد 1397، 12:07 ق‌ظ توسط Nino »
...