No creo que Bash admita condicionales en el aviso (como p. screen
lo hace, IIRC ), pero podría usar la sustitución de comandos con \j
para agregarle algo de lógica.
anyjobs() { [[ "$1" != 0 ]] && echo "[ $1 bg job(s) ] "; }
PS1='$? $(anyjobs \j)\u@\h \w\$ '
Eso ejecuta un subshell, que involucra un fork()
en Bash, pero no veo una forma de evitarlo.
En general, puede evitar la subcapa configurando una variable en PROMPT_COMMAND
, pero no veo una forma simple de obtener la cantidad de trabajos allí.
По умолчанию cd
поиск относительно вашего рабочего каталога (, если вы укажете относительный путь, а не абсолютный путь ). Вы можете добавить в каталоги, в которых будет выполняться поиск совпадений, установив переменную окружения CDPATH
в одном из ваших файлов инициализации оболочки. Это поддерживается по крайней мере в bash
и ksh
.
Со страницы руководстваbash
:
CDPATH
The search path for the cd command. This is a colon-separated list of directories in which the shell looks for destination directories specified by the cd command. A sample value is ".:~:/usr".
Для вашего примера,если бы вы установили
export CDPATH=.:/mnt/c/Users/me/ho/hum
, тогда вы можете установить /mnt/c/Users/me/ho/hum/bin
в качестве рабочего каталога, просто набрав
cd bin
Обратите внимание, что если ваш предполагаемый пункт назначения имеет обычное имя (bin
), порядок записей в вашей переменной CDPATH
будет важен. Если бы ваш рабочий каталог был установлен /usr/local
и CDPATH
в соответствии с предыдущим абзацем, тогда cd bin
привел бы вас к /usr/local/bin
, а не /mnt/c/Users/me/ho/hum/bin
.
Простое решение — использовать псевдоним. Поставить
alias mb='cd /mnt/c/Users/me/ho/hum/bin'
в свой ~/.bashrc
. Затем вы можете просто ввести mb
, и bash выполнит команду cd
.
Очень многие оболочки — осмелюсь сказать, что большинство, если не все — поддерживают псевдонимы. Однако вам нужно будет добавить его в файл инициализации (например, .cshrc
,.zshrc
)каждой оболочки, которую вы хотите использовать. Имейте в виду, что синтаксис команды alias
может различаться в разных оболочках.