LINUX.ORG.RU

Неудачно выполненная операция при входе в bash

 , ,


0

1

При входе выдает такое, если я захожу через Konsole:

vova@megahost ~ ✗ $ echo $?
1

Если зайду через tty, то $? выводит 0. Мне интересно, что это может быть.

Мой конфиг файл, почти не измененный.

# /etc/bash.bashrc
#
# https://wiki.archlinux.org/index.php/Color_Bash_Prompt
#
# This file is sourced by all *interactive* bash shells on startup,
# including some apparently interactive shells such as scp and rcp
# that can't tolerate any output. So make sure this doesn't display
# anything or bad things will happen !

# Test for an interactive shell. There is no need to set anything
# past this point for scp and rcp, and it's important to refrain from
# outputting anything in those cases.

# If not running interactively, don't do anything!
[[ $- != *i* ]] && return

# Bash won't get SIGWINCH if another process is in the foreground.
# Enable checkwinsize so that bash will check the terminal size when
# it regains control.
# http://cnswww.cns.cwru.edu/~chet/bash/FAQ (E11)
shopt -s checkwinsize

# Enable history appending instead of overwriting.
shopt -s histappend

case ${TERM} in
	xterm*|rxvt*|Eterm|aterm|kterm|gnome*)
		PROMPT_COMMAND=${PROMPT_COMMAND:+$PROMPT_COMMAND; }'printf "\033]0;%s@%s:%s\007" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/~}"'
		;;
	screen)
		PROMPT_COMMAND=${PROMPT_COMMAND:+$PROMPT_COMMAND; }'printf "\033_%s@%s:%s\033\\" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/~}"'
		;;
esac

# fortune is a simple program that displays a pseudorandom message
# from a database of quotations at logon and/or logout.
# If you wish to use it, please install "fortune-mod" from the
# official repositories, then uncomment the following line:

# [[ "$PS1" ]] && /usr/bin/fortune

# Set colorful PS1 only on colorful terminals.
# dircolors --print-database uses its own built-in database
# instead of using /etc/DIR_COLORS. Try to use the external file
# first to take advantage of user additions. Use internal bash
# globbing instead of external grep binary.

# sanitize TERM:
safe_term=${TERM//[^[:alnum:]]/?}
match_lhs=""

[[ -f ~/.dir_colors ]] && match_lhs="${match_lhs}$(<~/.dir_colors)"
[[ -f /etc/DIR_COLORS ]] && match_lhs="${match_lhs}$(</etc/DIR_COLORS)"
[[ -z ${match_lhs} ]] \
	&& type -P dircolors >/dev/null \
	&& match_lhs=$(dircolors --print-database)

if [[ $'\n'${match_lhs} == *$'\n'"TERM "${safe_term}* ]] ; then
	
	# we have colors :-)

	# Enable colors for ls, etc. Prefer ~/.dir_colors
	if type -P dircolors >/dev/null ; then
		if [[ -f ~/.dir_colors ]] ; then
			eval $(dircolors -b ~/.dir_colors)
		elif [[ -f /etc/DIR_COLORS ]] ; then
			eval $(dircolors -b /etc/DIR_COLORS)
		fi
	fi

	PS1="$(if [[ ${EUID} == 0 ]]; then echo '\[\033[01;31m\]\h'; else echo '\[\033[1;49;33m\]\u@\h'; fi)\[\033[01;34m\] \w \$([[ \$? != 0 ]] && echo \"\[\033[01;31m\]\342\234\227\[\033[01;34m\] \")\\$\[\033[00m\] "

	# Use this other PS1 string if you want \W for root and \w for all other users:
	# PS1="$(if [[ ${EUID} == 0 ]]; then echo '\[\033[01;31m\]\h\[\033[01;34m\] \W'; else echo '\[\033[01;32m\]\u@\h\[\033[01;34m\] \w'; fi) \$([[ \$? != 0 ]] && echo \"\[\033[01;31m\]\342\234\227\[\033[01;34m\] \")\\$\[\033[00m\] "

	alias ls="ls --color=auto"
	alias dir="dir --color=auto"
	alias grep="grep --color=auto"
	alias dmesg='dmesg --color'

	# Uncomment the "Color" line in /etc/pacman.conf instead of uncommenting the following line...!

	# alias pacman="pacman --color=auto"

else

	# show root@ when we do not have colors

	PS1="\u@\h \w \$([[ \$? != 0 ]] && echo \":( \")\$ "

	# Use this other PS1 string if you want \W for root and \w for all other users:
	# PS1="\u@\h $(if [[ ${EUID} == 0 ]]; then echo '\W'; else echo '\w'; fi) \$([[ \$? != 0 ]] && echo \":( \")\$ "

fi

PS2="> "
PS3="> "
PS4="+ "

# Try to keep environment pollution down, EPA loves us.
unset safe_term match_lhs

# Try to enable the auto-completion (type: "pacman -S bash-completion" to install it).
[ -r /usr/share/bash-completion/bash_completion ] && . /usr/share/bash-completion/bash_completion

# Try to enable the "Command not found" hook ("pacman -S pkgfile" to install it).
# See also: https://wiki.archlinux.org/index.php/Bash#The_.22command_not_found.22_hook
[ -r /usr/share/doc/pkgfile/command-not-found.bash ] && . /usr/share/doc/pkgfile/command-not-found.bash

Если зайду через tty, то ничего не высвечивает. Мне интересно, что это может быть.

сказать то чё хотел? чего не высвечивается, лолд?

system-root ★★★★ ()
Ответ на: комментарий от system-root

Я имел ввиду что выводит 0. Просто у меня при ошибке выводится крести; в попыхах перепутал.

Trieforce ()
Ответ на: комментарий от Trieforce

ты мысль сформулировать можешь?
ну консоль, ну возвращаешь в ней код ошибки
какие крести срань господня? куда крести?

выводит 0. Просто у меня при ошибке

ноль это не ошибка

system-root ★★★★ ()
Ответ на: комментарий от system-root

Поциэнт хочет знать, какая команда в его простыне даёт ошибку.

Про set -x и set -e поциент не знает.

geekless ★★ ()
Ответ на: комментарий от system-root

выводит 0. Просто у меня при ошибке

ноль это не ошибка

Ну или предложение целиком прочитать можно.

Trieforce ()

Мне интересно, что это может быть.

Результат выполнения последней команды из файла ″/home/vova/.bashrc″. Каждая команда при завершении даёт новое значение $?, поэтому нужно смотреть последнюю.

mky ★★★★★ ()
Ответ на: комментарий от mky
PS1="$(true)$(if [[ ${EUID} == 0 ]]; then echo '\[\033[01;31m\]\h'; else echo '\[\033[1;49;33m\]\u@\h'; fi)\[\033[01;34m\] \w \$([[ \$? != 0 ]] && echo \"\[\033[01;31m\]\342\234\227\[\033[01;34m\] \")\\$\[\033[00m\] "

Решил сделав это, но как-то не красиво...

Trieforce ()
Ответ на: комментарий от mky

Я вернул все как было и вдруг ошибка исчезла со всем. .bashrc пуст.

Trieforce ()
Ответ на: комментарий от Trieforce

.bashrc пуст.

Да, уже нашёл:

Note: /etc/bash.bashrc is non-standard, only some distros like ArchLinux have this included because packagers have added a -DSYS_BASHRC=«/etc/bash.bashrc» flag at compilation time, in order to have system bashrc file.

Раньше всё было проще, есть только ~/.bashrc и если нужно, из него вызов общистемного bashrc из /etc/.

А по поводу красивости, примеры из Arch-wiki, где они определяют переменные RET_SUCC и RET_FAIL, ИМХО, проще для восприятия, чем ваша супердлинная строка.

mky ★★★★★ ()
Ответ на: комментарий от system-root

человек спрашивает
заходишь с одного терминала
делаешь эхо $? и выводит 0
с другого выводит 1
он спрашивает почему ошибка

ubuntuawp ★★ ()
Ответ на: комментарий от system-root

человек спрашивает
заходишь с одного терминала
делаешь эхо $? и выводит 0
с другого выводит 1
он спрашивает почему ошибка

ubuntuawp ★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.