Псевдоним для всех пользователей

Я создал этот файл: /etc/profile.d/pycharm_alias.sh

startPyCharm() {...

}

alias py=startPyCharm

Я перезагрузил ПК, но затем псевдоним не доступен:

===> alias
...empty

Если я вхожу в ПК через ssh, псевдоним доступен:

===> ssh root@localhost
..
root@pc:~# alias
alias py='startPyCharm'

Как сделать псевдоним доступным для всех пользователей человечности система Linux?

Мы используем оболочку удара.

4
задан 9 December 2019 в 16:37

4 ответа

Почему Вы хотите псевдоним для всех пользователей?

, Почему бы не создать исполняемый сценарий?

сценарий А более прост и может использоваться от всей оболочки, не просто колотить.

, По крайней мере, в моем случае с помощью сценария вместо псевдонима решил мою проблему.

BTW: Это - просто обходное решение, не действительное решение вопроса.

0
ответ дан 21 December 2019 в 23:37

Псевдонимы являются персональными инструментами

  • , я думаю, что псевдонимы предназначаются для персонального использования (и должен находиться в каждом пользователе ~/.bashrc файл).

Сценарии оболочки (и другие программы) являются общими средствами

  • , Делают сценарий оболочки и помещают его в каталог, который находится в "общем пути".

    • , Но важно быть осторожным, чтобы не перезаписывать существующие программы или помещать существующие программы в тени. Можно поместить сценарий оболочки перед существующей программой в пути, так, чтобы система не находила его через [1 111].

      , Другими словами, удостоверяются, что имя уникально для предотвращения проблем с другими программами.

Подробные подсказки

Это - мой путь в Lubuntu 18.04.x LTS.

$ echo $PATH
/home/sudodus/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/usr/games

у меня есть собственное bin каталог, который автоматически найден и вставляет начало пути (с самым высоким приоритетом). Но остальная часть пути является стандартной.

я предложил бы, чтобы Вы

  • проверка, что не должно быть никакого конфликта с именем

    type unique-name  # shows if it exists and what kind of program it is
    which unique-name # shows where an installed program is stored 
    unique-name       # if known but not installed, you get a hint about it
    apt-cache policy *unique-name*  # package name (may or may not be same as program name)
    
  • , если никакой конфликт, создайте сценарий оболочки (это - тривиальный пример)

    echo 'echo "Hello World"' > unique-name
    
  • , делают исполняемый файл сценария оболочки

    chmod +x unique-name
    
  • , помещает сценарий оболочки в [1 113], если этому нужны полномочия пользователя root или иначе в [1 114].

    sudo cp -i unique-name /usr/local/bin
    

    опция -i предлагает Вам, если имя уже существует в целевом каталоге.

, Как все пользователи могут выполнить Ваш сценарий оболочки

при создании исполняемого файла сценария оболочки и это находится в каталоге в общем PATH, все могут выполнить его через его имя файла,

unique-name

существует несколько коротких строк, которые еще не используются в качестве названий стандартных программ, и можно найти такие имена путем тестирования с [1 143]

type short-string-to-be-tested

, например

$ type py
bash: type: py: not found

В моем компьютере нет никакой исполняемой программы и никакой оболочки, встроенной с тем именем, таким образом, я могу использовать py в качестве имени файла (и мне не нужен никакой псевдоним).

, Но при попытке работать py прежде, чем переименовать Ваш сценарий оболочки к тому имени,

$ py

Command 'py' not found, but can be installed with:

sudo apt install pythonpy

, Вы найдете, что существует такая программа (но это еще не установлено), и это могла бы быть хорошая идея выбрать другое имя, например

pych

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

1
ответ дан 21 December 2019 в 23:37

Почему глобальное alias работа deosn't

Одна причина, глобальное alias не работает, описано здесь :

метод в этом ответе не должен использоваться. Псевдонимы в .sh файлы в /etc/profile.d/ (или /etc/profile) будут определены только для оболочек входа в систему, и они не будут работать в интерактивных оболочках невхода в систему. В отличие от переменных среды, удар не может экспортировать псевдонимы в дочерние процессы, даже дочерние оболочки удара. Этот метод, может казаться, работает правильно, если он только тестируется в оболочках входа в систему, таких как исходная оболочка, полученная путем вхождения в систему в виртуальной консоли или через SSH, но он перестал работать в их дочерних оболочках и также перестал работать в оболочках, запущенных окнами терминала GUI. †“ Eliah Kagan 18 апреля '15 в 0:56

<час>

Использование глобальная функция в /etc/profile.d

В настоящее время Вы имеете /etc/profile.d/pycharm_alias.sh содержащий:

startPyCharm() {...

}

alias py=startPyCharm

Присвоение глобального псевдонима к функции не необходимо. Вы могли просто создать глобальную функцию, вызванную py, который делает то, что StartPyCharm делает.

, Например, создайте /etc/profile.d/py.sh содержащий:

#!/bin/bash

py () {
    echo "Running py function in /etc/profile.d/py.sh"
    echo "Substitute for py alias which calls StartPyCharm function"
}

export -f py

Замена echo команды с содержанием Вашего тока StartPyCharm () функция.

, Когда пользователь входит в систему и открывает оболочку, они могут ввести py, и глобальная функция вызвана вместо глобального псевдонима к функции.

Для наблюдения всех функций (и глобальный и локальный) использование declare -F

1
ответ дан 21 December 2019 в 23:37

Можно попытаться поместить это в /etc/bash.bashrc. Это формулировало цель, # System-wide .bashrc file for interactive bash(1) shells., Который кажется, что это может быть тем, что Вы хотите. Я удивлен, что Ваше profile.d решение не работало.

2
ответ дан 21 December 2019 в 23:37

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

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