Как отобразить текущий путь в командной строке в sh Linux (не Bash)?
Я хотел бы отобразить текущий путь в приглашении sh (не в оболочке bash), который в настоящее время просто показывает "#", я попытался с введением этого
env PS1="$(whoami)@$(hostname):$(pwd)"
а также
set PS1="$(whoami)@$(hostname):$(pwd)"
в /etc/profile
,
Но, как очевидно, это не обновляется, когда изменяется каталог или пользователь. Пожалуйста, предложите способ сделать это динамичным.
9 ответов
Подстановки команд в двойных кавычках "
Расширяйся немедленно. Это не то, что вы хотите для вашего приглашения. Одинарные кавычки '
сохранит замены в $PS1
которые затем расширяются только при отображении подсказки. Следовательно это должно работать:
export PS1='$(whoami)@$(hostname):$(pwd)'
Если вам нужен обычный знак доллара и пробел в конце вашего приглашения, просто добавьте $
в конце (побег не требуется): export PS1='$(whoami)@$(hostname):$(pwd)$ '
sh-4.2$ export PS1="\u@\h:\w>"
jenny@serenity:~>cd /usr/local
jenny@serenity:/usr/local>
Эта команда работает для меня.
export PS1="\u@\h: \W:$"
куда
\u = имя пользователя
\h = имя хоста
\W Имя текущей папки (не полный путь)
Можно подумать, чтобы подтолкнуть подсказку, добавив несколько цветов. Например:
export PS1='\[\e[0;36m\]\u\[\e[0m\]@\[\e[0;33m\]\h\[\e[0m\]:\[\e[0;35m\]\w\[\e[0m\]\$ '
Одним из ответов было использование одинарных кавычек вместо двойных, однако это не совсем правильный ответ. Что вы действительно хотите сделать, так это отложить оценку кода внутри вашего приглашения до его использования.
set PS1="$(pwd)"
устанавливает приглашение в рабочий каталог с помощью команды set.
set PS1="\$(pwd)"
НЕ расширяет $(pwd). Вместо этого для PS1 установлено буквальное значение $(pwd).
Протестируйте / поймите это, запустив:
echo $PS1
, Если вы видите строку: $pwd, ваш запрос работает. Если вы видите буквальный путь, приглашение не работает, поскольку оно статически установлено
Попробуйте эту красочную подсказку MULTILINE. Добавьте эту строку.
export PS1="[\e[1;33m\u\e[m@\e[1;36m\h\e[m] [\$(date +%k:%M:%S)]\n\e[0;32m[\w]\e[m \n\$ "
Подсказка будет:
[yourusername@hostname] [17:34:13]
~ <----- this will be your working directory
>
Используйте команду ниже, чтобы установить, как в cpanel.
экспорт PS1='$(whoami)@$ enjHOSTNAME%%.*} [$(pwd)]# '
- вим ~/.bashrc
- добавьте следующие строки:
# notice the tailing space
export PS1='$(whoami)@$(hostname):$(pwd)# '
- откройте новый термин и вы обнаружите:
root@6e5efa720515:/opt/myapp#
Вы можете отобразить текущий путь к ветке и папке в терминале в Ubuntu, используя следующие методы, при условии, что вы работаете с репозиторием Git:
Отображение ветки Git и пути к папке:
Чтобы отобразить текущую ветку Git и путь к папке, вы можете использовать команду
git
команда вместе с некоторыми командами оболочки. Вот общий подход для достижения этой цели:Откройте терминал и перейдите в каталог в репозитории Git. Затем добавьте следующие строки в файл конфигурации оболочки (например,
~/.bashrc
,~/.zshrc
,~/.bash_profile
, или~/.config/fish/config.fish
, в зависимости от вашей оболочки):Для Bash или Zsh:
parse_git_branch() {
git branch 2>/dev/null | sed -n '/\* /s///p'
}
PS1='${debian_chroot:+($debian_chroot)}\[\e[31m\][\[\e[m\]\[\e[38;5;172m\]\u\[\e[m\]@\[\e[38;5;153m\]\h\[\e[m\] \[\e[38;5;214m\]$(parse_git_branch)\[\e[m\] \[\e[38;5;214m\]\W\[\e[m\]\[\e[31m\]]\[\e[m\]\\$ '
Когда вы откроете новый терминал, он будет выглядеть так:
[root@chief main current-folder]$