Как добавить псевдоним в файл .bashrc? - PullRequest
0 голосов
/ 02 июля 2018

Я новичок в Ubuntu. Мне нужно указать путь в моем файле .bashrc, но я получаю сообщение об ошибке отказа в разрешении, даже если я являюсь администратором системы.

export TCFRAME_HOME=~/tcframe
alias tcframe=$TCFRAME_HOME/scripts/tcframe

Теперь, когда я печатаю tcframe version, я получаю

bash: /home/p46562/tcframe/scripts/tcframe: No such file or directory

Как это исправить?

1 Ответ

0 голосов
/ 03 июля 2018

Сообщение об ошибке сообщает, что вы пытаетесь выполнить файл, который не существует.

Мы можем смутно догадываться о том, какие файлы существуют, но без доступа к вашей системе мы не можем точно знать, что вы на самом деле установили и где.

Возможно, у вас есть файл с именем tcframe в каталоге с именем scripts в вашем домашнем каталоге?

alias tcframe=$HOME/scripts/tcframe

Общепринятым способом избежать засорения вашей среды одним или несколькими псевдонимами для каждой случайной утилиты, которую вы где-то установили, является создание выделенного каталога для вашего PATH - общепринятое соглашение - вызывать его bin - и заполнять его с символическими ссылками на вещи, которые вы хотите иметь исполняемыми.

Только один раз,

mkdir $HOME/bin

и отредактируйте .profile (или .bash_profile или .bashrc, если хотите) , включив в него строку

PATH=$HOME/bin:$PATH

Теперь, чтобы сделать исполняемый скрипт доступным из любого места без явного пути, создайте символическую ссылку на него в bin;

ln -s $HOME/scripts/tcframe $HOME/bin

Обратите внимание, что синтаксис похож на cp; последний аргумент - это пункт назначения (который может быть каталогом или новым именем файла), а первый (и любые последующие аргументы перед последним, если последний является каталогом) являются источниками. Если местом назначения является каталог, имя файла каждого исходного аргумента используется как имя новой символической ссылки в каталоге назначения.

Также обратите внимание, что вы обычно хотите использовать абсолютные пути; относительный путь разрешается относительно bin (например,

ln -s ../scripts/tcframe $HOME/bin

, даже если вы находитесь в каталоге, где ../scripts не существует.)

Скрипты по определению должны быть исполняемыми. Если это не так, вы получаете «разрешение отказано» при попытке запустить их. Это контролируется разрешениями; каждый файл имеет набор битов прав, которые указывают, можете ли вы читать, записывать (или перезаписывать) и выполнять этот файл. Эти разрешения также устанавливаются отдельно для членов вашей группы (так что вы можете управлять грубой формой доступа группы) и для всех остальных. Но для ваших личных сценариев вам действительно важно, чтобы бит x (исполняемый) был установлен для вас. Если это не так, вы можете изменить его - это требуется только один раз.

chmod +x scripts/tcframe
...