Клавиша Tab увеличивает громкость в Fedora

Переменная $ 0 содержит путь к сценарию:

$ cat ~/bin/foo.sh
#!/bin/sh
echo $0

$ ./bin/foo.sh
./bin/foo.sh

$ foo.sh
/home/terdon/bin/foo.sh

$ cd ~/bin
$ foo.sh
./foo.sh

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

## Set mydir to the directory containing the script
## The ${var%pattern} format will remove the shortest match of
## pattern from the end of the string. Here, it will remove the
## script's name,. leaving only the directory. 
mydir="${0%/*}"

# config load
source "$mydir"/config.sh

Если каталог находится в вашем $ PATH , все еще проще. Вы можете просто запустить исходный config.sh . По умолчанию источник будет искать файлы в каталогах в $ PATH и будет использовать первый найденный файл:

$ help source
source: source filename [arguments]
    Execute commands from a file in the current shell.

Read and execute commands from FILENAME in the current shell.  The
entries in $PATH are used to find the directory containing FILENAME.
If any ARGUMENTS are supplied, they become the positional parameters
when FILENAME is executed.

Если вы уверены, что ваш config.sh ] уникален или, по крайней мере, что он первый найденный в $ PATH , вы можете напрямую получить его. Однако я предлагаю вам не делать этого и вместо этого придерживаться первого метода. Вы никогда не знаете, когда другой config.sh может быть в вашем $ PATH .

0
27.04.2019, 14:47
1 ответ

После поиска выяснилось, что это аппаратная проблема. Нажатие Tabфактически отправило код для Volume up, поэтому это нельзя решить программно.

1
28.01.2020, 02:40

Теги

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