Snap-приложения не отображаются после повторного входа в систему с использованием оболочки для рыбы

Маленький shellscript

Я предлагаю небольшой командный столбец bash с двумя основными командами (и переменной filetype, чтобы было легко переключиться, чтобы искать другие типы файлов).

Он не ищет или в символических ссылках, только обычные файлы.

#!/bin/bash

filetype=c
#filetype=pdf

# count the 'filetype' files

find -type f -name "*.$filetype" -ls|sed 's#.* \./##'|wc -l | tr '\n' ' '

# count directories containing 'filetype' files

find -type d -exec bash -c "ls -AF '{}'|grep -e '\.'${filetype}$ -e '\.'${filetype}'\*'$ > /dev/null && echo '{} contains file(s)'" \;|grep 'contains file(s)$'|wc -l

Подробный shellscript

Это более подробная версия, которая также рассматривает символические ссылки, [!d4 ]

#!/bin/bash

filetype=c
#filetype=pdf

# counting the 'filetype' files

echo -n "number of $filetype files in the current directory tree: "
find -type f -name "*.$filetype" -ls|sed 's#.* \./##'|wc -l

echo -n "number of $filetype symbolic links in the current directory tree: "
find -type l -name "*.$filetype" -ls|sed 's#.* \./##'|wc -l
echo -n "number of $filetype normal files in the current directory tree: "
find -type f -name "*.$filetype" -ls|sed 's#.* \./##'|wc -l
echo -n "number of $filetype symbolic links in the current directory tree including linked directories: "
find -L -type f -name "*.$filetype" -ls 2> /tmp/c-counter |sed 's#.* \./##' | wc -l; cat /tmp/c-counter; rm /tmp/c-counter

# list directories with and without 'filetype' files (good for manual checking; comment away after test)
echo '---------- list directories:'
 find    -type d -exec bash -c "ls -AF '{}'|grep -e '\.'${filetype}$ -e '\.'${filetype}'\*'$ > /dev/null && echo '{} contains file(s)' || echo '{} empty'" \;
echo ''
#find -L -type d -exec bash -c "ls -AF '{}'|grep -e '\.'${filetype}$ -e '\.'${filetype}'\*'$ > /dev/null && echo '{} contains file(s)' || echo '{} empty'" \;

# count directories containing 'filetype' files

echo -n "number of directories with $filetype files: "
find -type d -exec bash -c "ls -AF '{}'|grep -e '\.'${filetype}$ -e '\.'${filetype}'\*'$ > /dev/null && echo '{} contains file(s)'" \;|grep 'contains file(s)$'|wc -l

# list and count directories including symbolic links, containing 'filetype' files
echo '---------- list all directories including symbolic links:'
find -L -type d -exec bash -c "ls -AF '{}' |grep -e '\.'${filetype}$ -e '\.'${filetype}'\*'$ > /dev/null && echo '{} contains file(s)' || echo '{} empty'" \;
echo ''
echo -n "number of directories (including symbolic links) with $filetype files: "
find -L -type d -exec bash -c "ls -AF '{}'|grep -e '\.'${filetype}$ -e '\.'${filetype}'\*'$ > /dev/null && echo '{} contains file(s)'" \; 2>/dev/null |grep 'contains file(s)$'|wc -l

# count directories without 'filetype' files (good for checking; comment away after test)

echo -n "number of directories without $filetype files: "
find -type d -exec bash -c "ls -AF '{}'|grep -e '\.'${filetype}$ -e '\.'${filetype}'\*'$ > /dev/null || echo '{} empty'" \;|grep 'empty$'|wc -l

Тестовый выход

Из короткого shellscript:

$ ./ccntr 
29 7

Из подробного shellscript:

$ LANG=C ./c-counter
number of c files in the current directory tree: 29
number of c symbolic links in the current directory tree: 1
number of c normal files in the current directory tree: 29
number of c symbolic links in the current directory tree including linked directories: 42
find: './cfiles/2/2': Too many levels of symbolic links
find: './cfiles/dirlink/2': Too many levels of symbolic links
---------- list directories:
. empty
./cfiles contains file(s)
./cfiles/2 contains file(s)
./cfiles/2/b contains file(s)
./cfiles/2/a contains file(s)
./cfiles/3 empty
./cfiles/3/b contains file(s)
./cfiles/3/a empty
./cfiles/1 contains file(s)
./cfiles/1/b empty
./cfiles/1/a empty
./cfiles/space d contains file(s)

number of directories with c files: 7
---------- list all directories including symbolic links:
. empty
./cfiles contains file(s)
./cfiles/2 contains file(s)
find: './cfiles/2/2': Too many levels of symbolic links
./cfiles/2/b contains file(s)
./cfiles/2/a contains file(s)
./cfiles/3 empty
./cfiles/3/b contains file(s)
./cfiles/3/a empty
./cfiles/dirlink empty
find: './cfiles/dirlink/2': Too many levels of symbolic links
./cfiles/dirlink/b contains file(s)
./cfiles/dirlink/a contains file(s)
./cfiles/1 contains file(s)
./cfiles/1/b empty
./cfiles/1/a empty
./cfiles/space d contains file(s)

number of directories (including symbolic links) with c files: 9
number of directories without c files: 5
$ 
1
задан 15 May 2018 в 17:03

8 ответов

Команда, которую вы первоначально задавали в вашем вопросе chsh -s which bash, была, как вы говорите, опечаткой, которая вызвала много путаницы вокруг вашего вопроса. Даже если бы он был правильно сформирован с символами, вокруг которых bash, как показано ниже.

изменит оболочку на bash (по умолчанию). Чтобы изменить оболочку на fish, используйте

или просто используйте команду chsh и введите путь к оболочке, которую хотите использовать. См. Ниже:

me@zippy-64bit:~$ chsh
Password: 
Changing the login shell for me
Enter the new value, or press ENTER for the default
    Login Shell [/bin/bash]: 

Для получения дополнительной информации о оболочке рыбы см. Это.

РЕДАКТИРОВАТЬ: Что касается оснасток: будет ли оболочка по умолчанию иметь значение? ответ, возможно, так как это зависит от сделанных предположений и подхода, применяемого программистом. Обратите внимание на различия в том, как bash и как рыба обрабатывает вещи в предыдущей ссылке. Например, у рыбы нет неявной подоболочки, которая может вызвать удивительные побочные эффекты при назначении переменных для программиста, ожидающего поведения, подобного bash. Хороший пример ожидания неявной подоболочки в вопросе это.

EDIT: В попытке прояснить, кажется, что концепция Наследование обрабатывается по-разному между рыбой и другими более распространенными раковинами, такими как bash. Я понимаю, что это может привести к неожиданному поведению из труб, циклов и функций (все из которых обычно используются в стратегиях программирования).

Программист также может полагаться на встроенные оболочки, которые либо не могут существовать в рыбы или могут быть реализованы неожиданным образом.

Источники:

man chsh fish в википедических подоболочках на Unix & amp; Linux Похожие сообщения на SuperUser.com
2
ответ дан 22 May 2018 в 10:57
  • 1
    +10 репутация уже и еще +100 приход! : O: O: O – Fabby 10 May 2018 в 01:21
  • 2
    @Fabby Wow. Это неожиданно. Я просто наткнулся на него в очереди на просмотр и подумал, что я мог бы помочь. – Elder Geek 10 May 2018 в 02:33
  • 3
    Хороший момент, сделал опечатку, но все же это не ответ на мой вопрос – Calin 10 May 2018 в 11:21
  • 4
    @Calin Когда я рассмотрел ваш вопрос, ему было назначено 2 закрытых голоса. «Неясно, что вы спрашиваете». Упоминание точных приложений поможет, поскольку они могут быть консольными приложениями. – Fabby 10 May 2018 в 12:44
  • 5
    Обновленный ответ. – Elder Geek 10 May 2018 в 18:53

Команда, которую вы первоначально задавали в вашем вопросе chsh -s which bash, была, как вы говорите, опечаткой, которая вызвала много путаницы вокруг вашего вопроса. Даже если бы он был правильно сформирован с символами, вокруг которых bash, как показано ниже.

изменит оболочку на bash (по умолчанию). Чтобы изменить оболочку на fish, используйте

или просто используйте команду chsh и введите путь к оболочке, которую хотите использовать. См. Ниже:

me@zippy-64bit:~$ chsh Password: Changing the login shell for me Enter the new value, or press ENTER for the default Login Shell [/bin/bash]:

Для получения дополнительной информации о оболочке рыбы см. Это.

РЕДАКТИРОВАТЬ: Что касается оснасток: будет ли оболочка по умолчанию иметь значение? ответ, возможно, так как это зависит от сделанных предположений и подхода, применяемого программистом. Обратите внимание на различия в том, как bash и как рыба обрабатывает вещи в предыдущей ссылке. Например, у рыбы нет неявной подоболочки, которая может вызвать удивительные побочные эффекты при назначении переменных для программиста, ожидающего поведения, подобного bash. Хороший пример ожидания неявной подоболочки в вопросе это.

EDIT: В попытке прояснить, кажется, что концепция Наследование обрабатывается по-разному между рыбой и другими более распространенными раковинами, такими как bash. Я понимаю, что это может привести к неожиданному поведению из труб, циклов и функций (все из которых обычно используются в стратегиях программирования).

Программист также может полагаться на встроенные оболочки, которые либо не могут существовать в рыбы или могут быть реализованы неожиданным образом.

Источники:

man chsh fish в википедических подоболочках на Unix & amp; Linux Похожие сообщения на SuperUser.com
2
ответ дан 17 July 2018 в 15:07

Команда, которую вы первоначально задавали в вашем вопросе chsh -s which bash, была, как вы говорите, опечаткой, которая вызвала много путаницы вокруг вашего вопроса. Даже если бы он был правильно сформирован с символами, вокруг которых bash, как показано ниже.

изменит оболочку на bash (по умолчанию). Чтобы изменить оболочку на fish, используйте

или просто используйте команду chsh и введите путь к оболочке, которую хотите использовать. См. Ниже:

me@zippy-64bit:~$ chsh Password: Changing the login shell for me Enter the new value, or press ENTER for the default Login Shell [/bin/bash]:

Для получения дополнительной информации о оболочке рыбы см. Это.

РЕДАКТИРОВАТЬ: Что касается оснасток: будет ли оболочка по умолчанию иметь значение? ответ, возможно, так как это зависит от сделанных предположений и подхода, применяемого программистом. Обратите внимание на различия в том, как bash и как рыба обрабатывает вещи в предыдущей ссылке. Например, у рыбы нет неявной подоболочки, которая может вызвать удивительные побочные эффекты при назначении переменных для программиста, ожидающего поведения, подобного bash. Хороший пример ожидания неявной подоболочки в вопросе это.

EDIT: В попытке прояснить, кажется, что концепция Наследование обрабатывается по-разному между рыбой и другими более распространенными раковинами, такими как bash. Я понимаю, что это может привести к неожиданному поведению из труб, циклов и функций (все из которых обычно используются в стратегиях программирования).

Программист также может полагаться на встроенные оболочки, которые либо не могут существовать в рыбы или могут быть реализованы неожиданным образом.

Источники:

man chsh fish в википедических подоболочках на Unix & amp; Linux Похожие сообщения на SuperUser.com
2
ответ дан 20 July 2018 в 15:32

Команда, которую вы первоначально задавали в вашем вопросе chsh -s which bash, была, как вы говорите, опечаткой, которая вызвала много путаницы вокруг вашего вопроса. Даже если бы он был правильно сформирован с символами, вокруг которых bash, как показано ниже.

изменит оболочку на bash (по умолчанию). Чтобы изменить оболочку на fish, используйте

или просто используйте команду chsh и введите путь к оболочке, которую хотите использовать. См. Ниже:

me@zippy-64bit:~$ chsh Password: Changing the login shell for me Enter the new value, or press ENTER for the default Login Shell [/bin/bash]:

Для получения дополнительной информации о оболочке рыбы см. Это.

РЕДАКТИРОВАТЬ: Что касается оснасток: будет ли оболочка по умолчанию иметь значение? ответ, возможно, так как это зависит от сделанных предположений и подхода, применяемого программистом. Обратите внимание на различия в том, как bash и как рыба обрабатывает вещи в предыдущей ссылке. Например, у рыбы нет неявной подоболочки, которая может вызвать удивительные побочные эффекты при назначении переменных для программиста, ожидающего поведения, подобного bash. Хороший пример ожидания неявной подоболочки в вопросе это.

EDIT: В попытке прояснить, кажется, что концепция Наследование обрабатывается по-разному между рыбой и другими более распространенными раковинами, такими как bash. Я понимаю, что это может привести к неожиданному поведению из труб, циклов и функций (все из которых обычно используются в стратегиях программирования).

Программист также может полагаться на встроенные оболочки, которые либо не могут существовать в рыбы или могут быть реализованы неожиданным образом.

Источники:

man chsh fish в википедических подоболочках на Unix & amp; Linux Похожие сообщения на SuperUser.com
2
ответ дан 23 July 2018 в 16:04

Установки, которые вы установили, можно найти в / snap / bin / У вас должен быть этот каталог в вашем $ PATH.

Ubuntu автоматически добавляет / snap / bin в ваш $ PATH. Это происходит в файле /etc/profile.d/apps-bin-path.sh, который запускается, когда вы получаете оболочку входа.

Я проверил, а fish также добавляет /snap/bin в $ PATH, поэтому обычно это будет хорошо.

Можете ли вы показать нам вывод команды

echo $PATH

Если на выходе есть /snap/bin, то поздравления вы обнаружили ошибку в Ubuntu, и вы может записать отчет на Launchpad для него.

дополнение: Ubuntu внутренне, вероятно, использует $ SHELL для некоторых скриптов. Оболочка fish не на 100% совместима с bash, и похоже, что это является причиной проблемы. Это обычная проблема, когда вы меняете свою оболочку входа в нечто иное, чем bash. См. Например, этот отчет https://youtrack.jetbrains.com/issue/CPP-2919, когда пользователи меняют свою оболочку на /bin/tcsh.

Вам нужно отправить отчет об ошибке в Ubuntu, чтобы кто-то исследовал и исправил внутренние скрипты для работы с fish. Если вы действительно любите fish, это то, что вам нужно сделать. -

)
-1
ответ дан 22 May 2018 в 10:57
  • 1
    Как вы объясните, что они могут быть запущены из начальной позиции? тогда? – Elder Geek 14 May 2018 в 04:20
  • 2
    @Calin сказал, что, когда они вышли из системы и вошли в систему снова, он прекратил работать. Это имеет смысл, поскольку информация о оболочке обновляется по всей стране только при повторном входе в систему. Другое, что меня озадачивает, состоит в том, что команда была chsh -s fish. Это означает, что пользователь изменил оболочку входа для root, а не для учетной записи пользователя без полномочий root. Еще ошибка, но более тонкая. – Simos 15 May 2018 в 13:24
  • 3
    Единственный способ, которым команда изменит оболочку входа для root, будет заключаться в том, что пользователь был зарегистрирован как пользователь root, когда он был выпущен. он изменяет текущую оболочку входа, а не другую. См. [F1] для получения дополнительной информации. Ура! ;-) – Elder Geek 15 May 2018 в 23:13
  • 4
    FYI. Изменение оболочки не изменяет ваш путь. ;-) – Elder Geek 18 May 2018 в 01:06
  • 5
    ;-) Я сказал, что если $ PATH остается прежним, то это ошибка в Ubuntu, и для этого потребуется отчет об ошибке. Причина в том, что скрипты в Ubuntu используют $ SHELL для выполнения задач, а fish не на 100% совместим с bash. Такая проблема распространена в Unix / Linux, вот еще один пример: youtrack.jetbrains.com/issue/CPP-2919 OP отказался и сменил login $ SHELL на bash. Больше рыбы для них нет. – Simos 19 May 2018 в 10:34

Установки, которые вы установили, можно найти в / snap / bin / У вас должен быть этот каталог в вашем $ PATH.

Ubuntu автоматически добавляет / snap / bin в ваш $ PATH. Это происходит в файле /etc/profile.d/apps-bin-path.sh, который запускается, когда вы получаете оболочку входа.

Я проверил, а fish также добавляет /snap/bin в $ PATH, поэтому обычно это будет хорошо.

Можете ли вы показать нам вывод команды

echo $PATH

Если на выходе есть /snap/bin, то поздравления вы обнаружили ошибку в Ubuntu, и вы может записать отчет на Launchpad для него.

дополнение: Ubuntu внутренне, вероятно, использует $ SHELL для некоторых скриптов. Оболочка fish не на 100% совместима с bash, и похоже, что это является причиной проблемы. Это обычная проблема, когда вы меняете свою оболочку входа в нечто иное, чем bash. См. Например, этот отчет https://youtrack.jetbrains.com/issue/CPP-2919, когда пользователи меняют свою оболочку на /bin/tcsh.

Вам нужно отправить отчет об ошибке в Ubuntu, чтобы кто-то исследовал и исправил внутренние скрипты для работы с fish. Если вы действительно любите fish, это то, что вам нужно сделать. -

)
-1
ответ дан 17 July 2018 в 15:07

Установки, которые вы установили, можно найти в / snap / bin / У вас должен быть этот каталог в вашем $ PATH.

Ubuntu автоматически добавляет / snap / bin в ваш $ PATH. Это происходит в файле /etc/profile.d/apps-bin-path.sh, который запускается, когда вы получаете оболочку входа.

Я проверил, а fish также добавляет /snap/bin в $ PATH, поэтому обычно это будет хорошо.

Можете ли вы показать нам вывод команды

echo $PATH

Если на выходе есть /snap/bin, то поздравления вы обнаружили ошибку в Ubuntu, и вы может записать отчет на Launchpad для него.

дополнение: Ubuntu внутренне, вероятно, использует $ SHELL для некоторых скриптов. Оболочка fish не на 100% совместима с bash, и похоже, что это является причиной проблемы. Это обычная проблема, когда вы меняете свою оболочку входа в нечто иное, чем bash. См. Например, этот отчет https://youtrack.jetbrains.com/issue/CPP-2919, когда пользователи меняют свою оболочку на /bin/tcsh.

Вам нужно отправить отчет об ошибке в Ubuntu, чтобы кто-то исследовал и исправил внутренние скрипты для работы с fish. Если вы действительно любите fish, это то, что вам нужно сделать. -

)
-1
ответ дан 20 July 2018 в 15:32
  • 1
    Как вы объясните, что они могут быть запущены из начальной позиции? тогда? – Elder Geek 14 May 2018 в 04:20
  • 2
    @Calin сказал, что, когда они вышли из системы и вошли в систему снова, он прекратил работать. Это имеет смысл, поскольку информация о оболочке обновляется по всей стране только при повторном входе в систему. Другое, что меня озадачивает, состоит в том, что команда была chsh -s fish. Это означает, что пользователь изменил оболочку входа для root, а не для учетной записи пользователя без полномочий root. Еще ошибка, но более тонкая. – Simos 15 May 2018 в 13:24
  • 3
    Единственный способ, которым команда изменит оболочку входа для root, будет заключаться в том, что пользователь был зарегистрирован как пользователь root, когда он был выпущен. он изменяет текущую оболочку входа, а не другую. См. [F1] для получения дополнительной информации. Ура! ;-) – Elder Geek 15 May 2018 в 23:13
  • 4
    FYI. Изменение оболочки не изменяет ваш путь. ;-) – Elder Geek 18 May 2018 в 01:06
  • 5
    ;-) Я сказал, что если $ PATH остается прежним, то это ошибка в Ubuntu, и для этого потребуется отчет об ошибке. Причина в том, что скрипты в Ubuntu используют $ SHELL для выполнения задач, а fish не на 100% совместим с bash. Такая проблема распространена в Unix / Linux, вот еще один пример: youtrack.jetbrains.com/issue/CPP-2919 OP отказался и сменил login $ SHELL на bash. Больше рыбы для них нет. – Simos 19 May 2018 в 10:34

Установки, которые вы установили, можно найти в / snap / bin / У вас должен быть этот каталог в вашем $ PATH.

Ubuntu автоматически добавляет / snap / bin в ваш $ PATH. Это происходит в файле /etc/profile.d/apps-bin-path.sh, который запускается, когда вы получаете оболочку входа.

Я проверил, а fish также добавляет /snap/bin в $ PATH, поэтому обычно это будет хорошо.

Можете ли вы показать нам вывод команды

echo $PATH

Если на выходе есть /snap/bin, то поздравления вы обнаружили ошибку в Ubuntu, и вы может записать отчет на Launchpad для него.

дополнение: Ubuntu внутренне, вероятно, использует $ SHELL для некоторых скриптов. Оболочка fish не на 100% совместима с bash, и похоже, что это является причиной проблемы. Это обычная проблема, когда вы меняете свою оболочку входа в нечто иное, чем bash. См. Например, этот отчет https://youtrack.jetbrains.com/issue/CPP-2919, когда пользователи меняют свою оболочку на /bin/tcsh.

Вам нужно отправить отчет об ошибке в Ubuntu, чтобы кто-то исследовал и исправил внутренние скрипты для работы с fish. Если вы действительно любите fish, это то, что вам нужно сделать. -

)
-1
ответ дан 23 July 2018 в 16:04
  • 1
    Как вы объясните, что они могут быть запущены из начальной позиции? тогда? – Elder Geek 14 May 2018 в 04:20
  • 2
    @Calin сказал, что, когда они вышли из системы и вошли в систему снова, он прекратил работать. Это имеет смысл, поскольку информация о оболочке обновляется по всей стране только при повторном входе в систему. Другое, что меня озадачивает, состоит в том, что команда была chsh -s fish. Это означает, что пользователь изменил оболочку входа для root, а не для учетной записи пользователя без полномочий root. Еще ошибка, но более тонкая. – Simos 15 May 2018 в 13:24
  • 3
    Единственный способ, которым команда изменит оболочку входа для root, будет заключаться в том, что пользователь был зарегистрирован как пользователь root, когда он был выпущен. он изменяет текущую оболочку входа, а не другую. См. [F1] для получения дополнительной информации. Ура! ;-) – Elder Geek 15 May 2018 в 23:13
  • 4
    FYI. Изменение оболочки не изменяет ваш путь. ;-) – Elder Geek 18 May 2018 в 01:06
  • 5
    ;-) Я сказал, что если $ PATH остается прежним, то это ошибка в Ubuntu, и для этого потребуется отчет об ошибке. Причина в том, что скрипты в Ubuntu используют $ SHELL для выполнения задач, а fish не на 100% совместим с bash. Такая проблема распространена в Unix / Linux, вот еще один пример: youtrack.jetbrains.com/issue/CPP-2919 OP отказался и сменил login $ SHELL на bash. Больше рыбы для них нет. – Simos 19 May 2018 в 10:34

Другие вопросы по тегам:

Похожие вопросы: