Bash 将 Folder/Directory 添加到 linux 中的路径的脚本不起作用

Bash Script To Add A Folder/Directory to the path in linux not working

我创建了一个 bash 脚本来添加 /My_Scripts/Bash_Scripts 到 linux.

的默认路径
!/bin/bash
#This Script is used to add a folder/diectory to the PATH..


echo -e "\e[92m\e[1mCREATING PATH...........\n\n"
cd
mkdir My_Scripts
cd My_Scripts
mkdir Bash_Scripts
cd

export PATH=$PATH:$HOME/My_Scripts/Bash_Scripts
echo -e "\e[92m\e[1mPATH CREATON SUCCESSFUL\n \e[39m"
echo $PATH

脚本的输出是

root@kali:~/Desktop# bash add_path
CREATING PATH...........


PATH CREATON SUCCESSFUL

`/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/root/My_Scripts/Bash_Scripts'

但是如果我在外面的终端输入echo $PATH,路径不会被添加

root@kali:~/Desktop# $PATH
bash: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin: No such file or directory

您的更改会影响当前 shell only.Put .bashrc 文件中的条目。它将影响所有 terminal.open .bashrc 文件并添加以下行和 运行 文件 -

 vim ~/.bashrc
 export PATH="$PATH:/home/username"
 ~/.bashrc 

编辑父级 shell

script.sh

#!/bin/bash 
export "PATH=$PATH:$HOME/My_Scripts/Bash_Scripts"
echo $PATH

$~路径=$(./script.sh)

$~ echo $PATH

/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/loganaayahee/My_Scripts/Bash_Scripts

首先 - 你应该使用 echo $PATH。通过简单地键入 $PATH 你试图执行命令,因此 "No such file or directory error"

接下来 - /root/My_Scripts/Bash_Scripts 并没有真正添加到 PATH。您看到的第一个输出是在脚本内部完成的,因此可以在那里看到更改。

原因是 PATH 只会在脚本 shell 的上下文中设置,作为 source add_path 执行它以保留变量的变化(但仅适用于当前 shell).

如果您希望变量在所有 shell 中保持不变 - 将其添加到 /.bashrc(因为您是以根用户身份运行的)。

您正在启动一个新的 bash 进程并且 PATH 仅在新进程的上下文中被修改。当此进程退出时,在其环境中所做的更改不会传播到父进程。

相反,您可能希望在当前 bash 进程的上下文中修改 PATH。如果你暂时想要这个,你可以 source 你的脚本。 source 将在当前 bash 进程的上下文中 运行。当心任何副作用 - 例如 cd 会更改目录,exit 会终止当前的 bash 进程。

如果您希望此更改永久用于所有未来的交互式会话,您可以修改 ~/.bashrc

此外,shebang 的语法是 #!/path/to/program,您缺少一个 #